import copy
parts = [[],[]]
while len(parts[-1]) < 2:
newval = random.choice([[1,2,3,4],[5,6,7,8]])
for part in parts:
random.shuffle(newval)
part.append(copy.copy(newval))
import random
parts = [[],[]]
while len(parts[-1]) < 2:
newval = random.choice([[1,2,3,4],[5,6,7,8]])
for part in parts:
random.shuffle(newval)
part.append(newval[:])
print(parts)
因为在Python中,一切都是引用。当您将值追加到数组时,实际上是将引用添加到内存中存储值的位置。在
例如,您已经将列表分配给第一个元素。在下一次迭代中重新洗牌此列表时,您将更改内存中的值。因此,访问在上一步中附加的元素时将要使用的值也将更改。在
要解决这个问题,请尝试附加
copy.copy(newval)
,而不是仅仅newval
(别忘了import copy
)以下是相应更改的代码:
random.shuffle
在适当的地方工作,因此会修改newval
。当附加到part
时,必须制作一个副本,否则相同的列表(或列表引用)将被无序处理并存储在part
中。在可能的输出:
^{pr2}$相关问题 更多 >
编程相关推荐