查找单词中所有连续的字母序列(字符克),从长度1到单词的长度

时间:2017-10-12 00:18:49

标签: python

这有效:

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']

但是有更清洁,更优雅,更Pythonic的方式来达到同样的效果吗?

1 个答案:

答案 0 :(得分: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]