如何选择编写紧凑但复杂的代码和易于遵循但更长的Python代码?

Sch*_*ang 6 python python-3.x

在Hackerrank(https://www.hackerrank.com/challenges/merge-the-tools/problem)上做这个挑战时,我遇到了用户写的这个高投票的答案.紧凑很好但我觉得很难遵循.

def merge_the_tools(string, k):
    S, N = input(), int(input()) 
    for part in zip(*[iter(S)] * N):
        d = dict()
        print(''.join([ d.setdefault(c, c) for c in part if c not in d ]))
Run Code Online (Sandbox Code Playgroud)

这是我编码的方式:

def merge_the_tools(string, k):
    # s1. cut string into list of substrings
    t=[]
    start=0
    k=int(k)
    end=k
    while(end<len(string)+1):
        t.append(string[start:end])
        start+=k
        end+=k
    #test: print(t)

    #s2. strip repeating char from t_i by iterating thru
    for ti in t:
        si=""
        for char in ti:
            if char not in si:
                si+=char
        print(si)
Run Code Online (Sandbox Code Playgroud)

根据Python标准,哪个答案展示了更好的实践?我浏览了PEP8并没有找到我的问题的答案.

小智 2

这完全取决于您的目标受众和代码的预期用途。如果代码只适合您,请按照您最能理解的方式进行操作。紧凑的代码通常(但并不总是)更有效,因为您必须编写更少的代码,并且如果出现错误,则需要检查的内容也更少。如果您打算让其他人查看您的代码并从中学习,那么一定要选择更长、更具可读性的代码,为他们提供找到捷径的空间,以便他们感到有成就感并为自己的工作感到自豪,但回到问题。没有正确或错误的方法(关于紧凑与可读),这完全取决于情况。