在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 ]))

这是我的编码方式:
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)

按照Python标准,哪个答案表明是更好的做法?我略过PEP8,但没有找到我的问题的答案。

最佳答案

这完全取决于您的目标受众和代码的预期用途。如果该代码只适合您,请按照自己的最佳理解去做。紧凑的代码通常有效,但并不总是更有效,因为您必须编写更少的代码,并且在出现错误的情况下浏览的内容也更少。如果您打算让其他人查看您的代码并从中学习,则一定要使用更长的可读性更高的代码,让他们有空间找出捷径,以便他们能为自己的工作感到成就和自豪,但是回到问题所在。做到这一点没有正确或错误的方法(关于紧凑型还是可读性),这一切都取决于情况。

10-06 05:17
查看更多