Cách tạo list rỗng trong python

Cách tạo list rỗng trong python

Tags
Published

Cách 1:

a=[[0]*6]*5 print(a) a[1][1]=-1 print(a)
Output:
[[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]] [[0, -1, 0, 0, 0, 0], [0, -1, 0, 0, 0, 0], [0, -1, 0, 0, 0, 0], [0, -1, 0, 0, 0, 0], [0, -1, 0, 0, 0, 0]]
Chuyện gì đang xảy ra. Nếu như mình nghĩ thì chỉ có một ô được thay đổi thành -1 nhưng ở đây tất cả đều đổi. Tại sao?
Với cách này thì chúng đều trỏ đến cùng một đối tượng. do vây khi thay đổi một cái nó sẽ thay đổi tất.
Tham khảo
https://stackoverflow.com/questions/6007881/what-does-the-0x-syntax-do-in-pythonBe warned that they all point to the same object. This is cool for immutables like integers but a pain for things like lists.

Cách 2: Nên dùng cách này

b= [[0 for k in range(6)] for l in range(5)] print(b) b[1][1]=-1 print(b)
[[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]] [[0, 0, 0, 0, 0, 0], [0, -1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]]