首页 > 解决方案 > 从python3中的列表中删除元素时获得不同的输出

问题描述

我想用列表中的每个数字检查每个数字而不重复任何检查。这段代码:

a = [0,1,2,3,4]
b = a

for i in a :
    for j in b:
        print(i,j)
    del b[0]

它给出了输出:

0 0
0 1
0 2
0 3
0 4
2 1
2 2
2 3
2 4
4 2
4 3
4 4

我想要的输出是:

0 0
0 1
0 2
0 3
0 4
1 1
1 2
1 3
1 4
2 2
2 3
2 4
3 3
3 4
4 4

为什么我跳过 1 和 3?当我删除 'del b[0]' 行时它已修复,但据我了解,此行不应该对 'i' 的值有任何影响

标签: pythonpython-3.xlist

解决方案


b是根据引用分配的a,而不是列表的副本a,因此当您从 中删除项目0b,它也会从 中删除a。相反,您应该分配b一个副本a

a = [0,1,2,3,4]
b = a[:]

for i in a:
    for j in b:
        print(i,j)
    del b[0]

这输出:

0 0
0 1
0 2
0 3
0 4
1 1
1 2
1 3
1 4
2 2
2 3
2 4
3 3
3 4
4 4

推荐阅读