在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]
"""