Python中傳遞列表時用copy()和不用的區別

在python中,python會通過引用的方式傳遞所有列表,所以必須名曲的告知Python要爲新的賦值變量分配新的內存,也就是用copy()方法
代碼舉例:

"""
Author:Zhengsh
Time:2020/5/3
Type:案例代碼
"""

def main_copy():
    old = [1, 2]
    new = old.copy()
    old.append(3)
	print("old = %s" % old)  # 舊列表添加了元素3,因此舊列表輸出爲[1, 2, 3]
    print("new_copy = %s" % new)  # 新列表由於是分配了新內存,那麼它不會因舊列表的變化而變化,輸出爲[1, 2]
    
def main_not_copy():
    old = [1, 2]
    new = old
    old.append(3)
	print("old = %s" % old)  # 舊列表添加了元素3,因此舊列表輸出爲[1, 2, 3]
    print("new = %s" % new)  # 新列表由於是直接引用old列表的地址,那麼它就會因舊列表的變化而變化,輸出爲[1, 2, 3]

if __name__ == '__main__':
    # 使用了copy()方法
    main_copy()
    
    print('\n' + '*' * 20 + '\n')  # 分割線
	
	# 不使用copy()方法,直接引用
	main_not_copy()
"""
output:
old = [1, 2, 3]
new_copy = [1, 2]

********************

old = [1, 2, 3]
new = [1, 2, 3]
"""
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章