リストのコピー
リストへの参照を渡すときは、
lst_ref = lst_org
中身をコピーした新しいリストを渡すときは[:]を付ける
lst_cp = lst_org[:]
lst_org = ['apple', 'banana', 'orange'] lst1 = lst_org # リストオブジェクトへの参照を渡す lst2 = lst_org[:] # 中身をコピーした新たなリストオブジェクトを作成 lst_org[0] = 'MILK' print(lst_org) #['MILK', 'banana', 'orange'] print(lst1) #['MILK', 'banana', 'orange'] print(lst2) #['apple', 'banana', 'orange']
[:]はシャローコピー
class Person: def __init__(self, name): self.name = name def rename(self, new_name): self.name = new_name lst_org = [Person("John"), Person("Cameron")] lst_cpy = lst_org[:] print(lst_org[0].name) # John print(lst_cpy[0].name) # John lst_org[0].rename("Cromartie") print(lst_org[0].name) # Cromartie print(lst_cpy[0].name) # Cromartie