我有两个清单,
l1 = [1,2,3,4,5,6]
l2 = [3,2]
Run Code Online (Sandbox Code Playgroud)
我想要的是删除l2中的列表l1的元素,因为我做了类似的事情,
for x in l1:
if x in l2:
l1.remove(x)
Run Code Online (Sandbox Code Playgroud)
它给出了类似的输出
[1, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)
但输出应该是这样的
[1, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)
任何人都可以阐明这一点.
a = [0,1,2,3,4,5]
for b in a:
print ":"+str(b)
a.pop(0)
Run Code Online (Sandbox Code Playgroud)
认为这将按顺序遍历整个列表及其所有项目,我运行此代码并期望这一点.
:0
0
:1
1
:2
2
:3
3
:4
4
:5
5
Run Code Online (Sandbox Code Playgroud)
相反,我得到了这个:
:0
0
:2
1
:4
2
Run Code Online (Sandbox Code Playgroud)
现在我明白为什么会发生这种情况,但这是python中的错误吗?它不应该仍然通过所有原始对象而不是当前列表的长度?为什么这不会抛出并超出界限错误?IE:它还不应该做到:
:0
0
:1
2
:2
4
:3
Error
:4
Error
:5
Error
Run Code Online (Sandbox Code Playgroud)