mrt*_*mgs 3 python random list while-loop
我正在尝试使用相同初始列表的排列来填充列表.我不明白为什么以下不起作用.
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)
Run Code Online (Sandbox Code Playgroud)
预期结果将是这样的:
[[[6,7,8,5],[1,3,4,2]],[[5,8,6,7],[4,2,3,1]]]
random.shuffle在原地工作并因此修改newval.您必须在追加时制作副本,part否则相同的列表(或列表引用)将被随机存储并存储在其中part.
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)
Run Code Online (Sandbox Code Playgroud)
可能的输出:
[[[3, 1, 2, 4], [5, 7, 6, 8]], [[1, 2, 4, 3], [6, 7, 5, 8]]]
[[[1, 3, 2, 4], [4, 2, 1, 3]], [[2, 4, 3, 1], [4, 3, 2, 1]]]
[[[7, 5, 6, 8], [3, 2, 4, 1]], [[8, 5, 6, 7], [1, 4, 3, 2]]]
Run Code Online (Sandbox Code Playgroud)