我有一个python脚本,如果list2中存在,则从list1中删除元素。似乎很简单。这就是我所做的:
arr1 = [1,2,3,4,5,6,7]
arr2 = [3,7,2,1,4,6]
for i in arr1:
print i
if i in arr2:
arr1.remove(i)
print arr1
预期输出 5
有了这个
1
[2, 3, 4, 5, 6, 7]
3
[2, 4, 5, 6, 7]
5
6
[2, 4, 5, 7] # final output
即使在每次迭代中打印i后,我也无法弄清楚它为什么首先跳过2。但是当我重复循环3次时,我得到了预期的输出。
arr1 = [1,2,3,4,5,6,7]
arr2 = [3,7,2,1,4,6]
for i in arr1:
print i
if i in arr2:
arr1.remove(i)
print arr1
for i in arr1:
print i
if i in arr2:
arr1.remove(i)
print arr1
for i in arr1:
print i
if i in arr2:
arr1.remove(i)
print arr1
输出
1
[2, 3, 4, 5, 6, 7]
3
[2, 4, 5, 6, 7]
5
6
[2, 4, 5, 7]
2
[4, 5, 7]
5
7
[4, 5]
4
[5]
这使我在最后一次迭代中输出5
。有人能告诉我们这里有什么。为什么它在第一时间没有删除所有元素以及为什么我需要运行它们3次。
修改 虽然列表理解起作用:
arr1[:] = [x for x in arr1 if x not in arr2]
但为什么我的第一个代码不起作用。它与列表理解的功能相同
答案 0 :(得分:-1)
对于我在arr2: 对于arr1中的j: 如果我在arr1: arr1.remove(ⅰ) 打印(ARR1)