2017-10-12 4 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

このタイプの投稿は[コードレビュー]に記載してください。 – Julien

答えて

0

最初に機能を作ります。あなたは入力と出力を強調し、またあなたの説明を置くためのデフォルトの場所を持っています。

2番目:変数の内容や使用に関係する名前を使用して、適用しようとしているロジックの概要を説明してください。

第3段階:1行に1つの論理的なステップを作成するか、行ったことをコメントしてください。

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] 
関連する問題