[英]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.