鉴于此代码:
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循环中的第一个项附加到子集的末尾?
谢谢!
答案 0 :(得分:0)
你应该这样做
masterList.append(subset[:])
当您执行masterList.append(subset)
时,您将传递对该子集的引用。因此,每次执行此操作时,您只需传递同一列表的多个引用,并在执行打印时最后,subsets
将所有subset[:]
评估为子集的最终值。
CreateInstanceFromAndUnwrap
在追加时制作列表的副本。