Python 循环没有给出预期的输出

标签 python loops

我试图找到 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/

相关文章:

python - 如何从 django 管理面板上传图像文件?

python - JSON 提取到 pandas 数据帧

python - 在 kubernetes 集群中部署 sentry helm

c - 循环携带的依赖性(如果存在的话)在哪里?

java程序卡在while循环中

java - 在循环中创建新对象的效率

python - Cython 从函数返回 malloced 指针

php - 使用 CLI 每秒运行一个 PHP 脚本

java - 在Java中使用for循环设置数组

python - 使用全局变量的 WebSocket 线程