python中可變類型在修改中需謹慎

由於python中tuple與str類型是不可修改的,dict和list是可以修改的,因而在對其進行一系列修改操作的時候需千萬謹慎,其中涉及了python的assignment、copy和deepcopy一些內容。
可參考:

  1. https://www.geeksforgeeks.org/copy-python-deep-copy-shallow-copy/
  2. https://www.runoob.com/w3cnote/python-understanding-dict-copy-shallow-or-deep.html

下面是一個例子,可以對比一下有無.copy()的區別

>>> dict_old = [{'a':'1'}, {'b':'2'}, {'c':'3'}]
>>> dict_new = {}
>>> list_new = []
>>> for dict_old_item in dict_old:
>>>     dict_new.update(dict_old_item)
>>>     list_new.append(dict_new)
>>> print(list_new)
[{'a': '1', 'b': '2', 'c': '3'},
 {'a': '1', 'b': '2', 'c': '3'},
 {'a': '1', 'b': '2', 'c': '3'}]
>>> dict_old = [{'a':'1'}, {'b':'2'}, {'c':'3'}]
>>> dict_new = {}
>>> list_new = []
>>> for dict_old_item in dict_old:
>>>     dict_new.update(dict_old_item)
>>>     list_new.append(dict_new.copy()) # 添加.copy()
>>> print(list_new)
[{'a': '1'},
 {'a': '1', 'b': '2'},
 {'a': '1', 'b': '2', 'c': '3'}]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章