简单循环中出现意外的列表丢失

the_darkside

以下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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章