簡體   English   中英

迭代數組列表並通過迭代器更改列表元素

[英]Iterating over a list of arrays and change list elements through iterator

我遇到了一段代碼,根據我的理解,該代碼不應該有效。 我循環遍歷Numpy數組列表,並希望剪輯其內容。 對於列表的操作,使用迭代器。

據我所知,for循環的迭代器被賦值給列表中的值。 因此,更改迭代器的值不應該影響列表本身。 在所示的代碼示例中,使用numpy函數剪輯,並將迭代器分配給out參數以進行就地剪切。 與此類似,我對某些數字執行相同操作並使用就地操作符iadd。

#Clip the arrays
a=np.array([4,5,1])
b=np.array([-4,3,-2])
c=np.array([3,4,-5])
print("Array before clipping:",a,b,c)
for iterator in [a, b, c]:
   np.clip(iterator, -3,3,out=iterator)
print("Array after clipping:",a,b,c)

#doing in-place calculation
d=3
e=4
print("Numbers before clipping:",d,e)
for iterator2 in [d,e]:
    iterator2 = operator.iadd(iterator2,2)
print("Numbers after clipping:",d,e)

我希望列表不會改變。 即使就地操作也只能操縱迭代器的內存位置。 但是,對於剪輯情況,列表會更改。 怎么可能?

裁剪前的數組:

[4 5 1] [-4  3 -2] [ 3  4 -5]

裁剪后的數組:

[3 3 1] [-3  3 -2] [ 3  3 -3]

裁剪前的數字:

3 4

裁剪后的數字:

3 4

您應該考慮使用copy.copycopy.deepcopy

暫無
暫無

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

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