2017-10-12 79 views
0

這工作:查找單詞的所有連續的字母序列(字符克),從長度爲1〜字的長度

s = 'beach' 
lst = [] 

for c in range(len(s) + 1): 
    lst.append(list(zip(*[s[i:] for i in range(c)]))) 

lst2 = [''.join(j) for i in lst for j in i] 
print(lst2) 

# output 
# ['b', 'e', 'a', 'c', 'h', 'be', 'ea', 'ac', 'ch', 'bea', 'eac', 'ach', 'beac', 'each', 'beach'] 

但有一個更清潔,更優雅,更Python的方式來實現同樣的結果?

+0

這種類型的帖子應該在[code-review]上。 – Julien

回答

0

第一:從中取出一個功能。這樣你強調輸入和輸出,並且還有一個默認的地方來說明你的解釋。

第二:嘗試通過使用與變量內容或使用相關的名稱來概述您嘗試應用的邏輯。

第三:嘗試每行只做一個邏輯步驟,或者評論你所做的事情。

from itertools import combinations_with_replacement 
def parts(word): 
""" Returns a list of all substrings of a string""" 
    combs = combinations_with_replacement(range(len(word)),2) 
    return [word[x[0]:x[1]+1] for x in combs]