文字列「BANANA」があります。私はすべての可能なシーケンシャルのサブストリングのリストを生成したいと思います:文字列を連続する部分文字列に分割しますか?
[B、BA、BAN、BANA、バナン、BANANA、A、AN、ANA、...]
私は達成することができ、このものですPython List Comprehensionを使っているのですか?注:私はPythonが初めてです。 TIA
文字列「BANANA」があります。私はすべての可能なシーケンシャルのサブストリングのリストを生成したいと思います:文字列を連続する部分文字列に分割しますか?
[B、BA、BAN、BANA、バナン、BANANA、A、AN、ANA、...]
私は達成することができ、このものですPython List Comprehensionを使っているのですか?注:私はPythonが初めてです。 TIA
はitertools
と、次の試してみてください。
str = "BANANA"
all = [[''.join(j) for j in itertools.product(str, repeat=i)] for i in range(1, len(str)+1)]
>>> all[0]
['B', 'A', 'N', 'A', 'N', 'A']
>>> all[1]
['BB', 'BA', 'BN', 'BA', 'BN', 'BA', 'AB', 'AA', 'AN', 'AA', 'AN', 'AA', 'NB', 'NA', 'NN', 'NA', 'NN', 'NA', 'AB', 'AA', 'AN', 'AA', 'AN', 'AA', 'NB', 'NA', 'NN', 'NA', 'NN', 'NA', 'AB', 'AA', 'AN', 'AA', 'AN', 'AA']
>>>
リスト内包使い方:
s = "BANANA"
l = len(s)
ar = []
for i in range(l):
for j in range(i,l):
ar.append(s[j:])
print(*ar)
:
s = "BANANA"
l = len(s)
ar = [s[j:] for i in range(l) for j in range(i,l)]
print(*ar)
をネストされたループを使用して
両出力:
BANANA ANANA NANA ANA NA A ANANA NANA ANA NA A NANA ANA NA A ANA NA A NA A A
N.B:itertools
はすでにA.J.の答えで説明されています。あなたがすべてのかのうサブリストをしたい場合は
、あなたは1、リスト内の理解のための2つを使用することができます。
def sublists(lst):
return [lst[m:n+1] for m in range(0,len(lst)+1) for n in range(m,len(lst)+1)]
sublists("banana")
=> ['b', 'ba', 'ban', 'bana', 'banan', 'banana', 'banana', 'a', 'an', 'ana', 'anan', 'anana', 'anana', 'n', 'na', 'nan', 'nana', 'nana', 'a', 'an', 'ana', 'ana', 'n', 'na', 'na', 'a', 'a', '']
をあなたはいけない場合たく繰り返し要素:
def sublistsWithoutRepeated(lst):
return list(set(sublists(lst)))
sublistsWithoutRepeated("banana")
=> ['a', '', 'b', 'ba', 'nana', 'na', 'nan', 'an', 'anana', 'anan', 'n', 'bana', 'ban', 'banan', 'banana', 'ana']
とhttp://stackoverflow.com/questions/12945029 /部分文字列を使用するPython – abccd
私の謝罪...私は適切なキーワードを探していませんでした。しかしdownvoteのおかげで。 – RobertJoseph
ああ私はdownvoteしなかった、私がしたすべての重複が表示された、私は通常、重複をdownvoteしない – abccd