簡體   English   中英

Python循環不會給出預期的輸出

[英]Python looping doesn't give expected output

我試圖找到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是按值調用還是按引用調用?

你可以使用“set”(考慮數學概念)數據結構而不是“list”,這里:

x = set([1,2,3,4])
y = set([1,2])
x - y

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM