我试图找到 arr1 和 arr2 之间缺少的元素,但不确定代码有什么问题,为什么它不起作用。请提出建议。
def miss2(arr1, arr2):
arr3=arr1
for i in arr1:
# print(i)
for j in arr2:
# print(i,j)
if i == j:
arr3.remove(j)
print(arr3)
arr1=[1,2,3,4]
arr2=[1,2]
miss2(arr1,arr2)
结果:[2, 3, 4]
而不是 [3, 4]
最佳答案
Python中的对象是通过引用存储的,这意味着你没有将arr1
的值赋给arr3
,而是一个指向对象。您可以使用 is
运算符来测试两个对象在内存中是否具有相同的地址。
序列可以通过切片来复制,因此您可以使用它来复制列表:
arr3 = arr1[:]
你也可以使用
arr3 = list(arr1)
或者您可以使用 copy() 模块:
from copy import copy
arr3 = copy(arr1)
顺便说一句,你可以试试这个:
print [i for i in arr1 if i not in arr2]
关于Python 循环没有给出预期的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42743128/