【发布时间】:2012-05-30 19:31:23
【问题描述】:
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))
输入:
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作为变量。这可能会导致混乱。