错误:每次重复for循环时嵌套列表行为?

时间:2016-02-16 18:28:55

标签: python python-2.7

鉴于此代码:

import random

plusMin = [1000, -47, 1000, -250, 1015, -63, 1000, -563]

masterList = []
subset = [-125, 375, 250, 250]

for item in plusMin:
    if item > 0:
        masterList.append(subset)
        subset.append(1)
    else:
        masterList.append(item)

print masterList

不应该输出以下内容吗?

[[ - 125,375,250,250], - 47,[ - 125,375,250,250,1], - 250,[ - 125,375,250,250,1,1], - 63,[ - 125,375,250,250,1,1,1], - 563]

...追加" 1"每次重复for循环到子集?

相反,我得到的输出是:

[[ - 125,375,250,250,1,1,1,1], - 47,[ - 125,375,250,250,1,1,1,1], - 250,[ - 125,375,250,250,1,1,1,1], - 63,[ - 125,375,250,250,1,1,1,1], - 563]

看起来像嵌套for循环的输出。我到底为什么会得到四个" 1"使用for循环中的第一个项附加到子集的末尾?

谢谢!

1 个答案:

答案 0 :(得分:0)

你应该这样做

masterList.append(subset[:])

当您执行masterList.append(subset)时,您将传递对该子集的引用。因此,每次执行此操作时,您只需传递同一列表的多个引用,并在执行打印时最后,subsets将所有subset[:]评估为子集的最终值。

CreateInstanceFromAndUnwrap在追加时制作列表的副本。