import itertools
ws=[]
subs=[]
set_subs=[]
for i in xrange(int(raw_input())):
S=raw_input()
l=len(S)
subs.append(S[i:j+1] for i in xrange(l) for j in xrange(i,l))
輸入:Python的發電機行爲
2
aab
aac
現在都subs[0]
和subs[1]
給我同樣的結果。
print list(subs[0])
>>>['a','aa','aac','a','ac','c']
print list(subs[1])
>>>['a','aa','aac','a','ac','c']
而list(subs[0])
應該已經['a','aa','aab','a','ab','b']
我隱約明白爲什麼會這樣。我該怎麼做才能使subs[0]
和subs[1]
實際上有所不同。
注:改變所述線
subs.append(S[i:j+1] for i in xrange(l) for j in xrange(i,l))
與
subs.append([S[i:j+1] for i in xrange(l) for j in xrange(i,l)])
不是一個選項
只是一個建議:你不應該在生成器表達式中重複使用'i'作爲變量。它可能導致混亂。 – mata