python中同一事物的不同输出

时间:2016-06-11 09:36:32

标签: python-2.7

sr = [12,13,4]
thre = 1

kaju = []

for p in range(len(sr)):
    sr[p] -= thre
    kaju.append(sr)
    print sr

print kaju

结果显示为

[11, 13, 4]
[11, 12, 4]
[11, 12, 3]
[[11, 12, 3], [11, 12, 3], [11, 12, 3]

我不知道为什么sr和kaju不一样

2 个答案:

答案 0 :(得分:0)

列表由Python中的引用传递。因此,当您将sr附加到kaju时,您只是将另一个引用添加到同一列表中。因此,您的print语句反映了每次迭代时对sr的更改,但kaju只包含对同一列表的一堆引用。

如果希望kaju的元素反映每次迭代的更改,则必须在每次迭代时复制sr的值,这可以使用内置的{{1}完成功能

list()

<强>输出

for p in range(len(sr)):
    sr[p] -= thre
    kaju.append(list(sr))
    print sr 

print kaju 

答案 1 :(得分:0)

因为每次调用追加时都会在java.util.regex.PatternSyntaxException: Unclosed character class near index 7 [^\],\s* ^ 附加整个列表。您可能只想追加sr