『Python 初心者』 List: Copy 或是 Reference

當你使用Python中的List,並且想要複製一份新的List並進行修改時,會發現可能不小心改了原本List中的東西,故我在這邊紀錄一下,提醒自己不要犯同樣的錯。

1
2
3
4
5
6
7
8
9
10
11
12
amazon_cart = ['notebook', 'toy', 'grapes']

#Reference
new_cart_1 = amazon_cart
#Copy
new_cart_2 = amazon_cart[:]

amazon_cart[0] = 'laptop'

print('amazon_cart:',amazon_cart)
print('new_cart_1:',new_cart_1)
print('new_cart_2:',new_cart_2)

首先,我們把amazon_cart裝滿三個東西,然後新增兩個購物車分別透過Reference與Copy的方式分別新增了購物車1與購物車2,接著我們修改了amazon_cart中第一個item,接著把amazon_cart、new_cart_1與new_cart_2列印出來

python_list_ref_or_copy_result

我們發現使用new_cart_1 = amazon_cart代表了Reference,當amazon_cart或new_cart_1改變時,其會互相影響;而new_cart_2 = amazon_cart[:]則是使用COPY的方式,amazon_cart或new_cart_2其中一邊新增修改list中的項目時,並不會互相影響。

0%