以下for循环将按ids
预期打印列表的每个元素:
ids = [0,1,2,3,4,5,6,7,8,9]
for item in ids:
print(item)
0
1
2
3
4
5
6
7
8
9
但是,当我构造一个应生成两个随机数的for循环时,该循环仅经过5个周期(偶数)。在这里,我将diff设置为等于的集合,ids
其中删除了当前商品编号。diff
应该是9个数字的集合(因此,对于第一个循环diff
为[1,2,3,4,5,6,7,8,9]
,在第二个循环diff
为[0,2,3,4,5,6,7,8,9]等...但是发生了什么ids
完全跳过列表的奇数。为什么ids
在for循环中根本不修改列表时会发生这种情况?如何ids
修改列表?
ids = [0,1,2,3,4,5,6,7,8,9]
for item in ids:
print(item)
diff = ids
diff.remove(item)
test = random.sample(diff, 2)
print(test)
0
[8, 2]
2
[8, 5]
4
[1, 6]
6
[9, 8]
8
[7, 3]
我想你要
diff = ids.copy()
您所拥有diff
的只是指向ids
,因此从中删除元素时diff
,也从中删除元素ids
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句