Tại sao giá trị 2 mảng này khác nhau?

Tại sao m và m1 lại khác nhau nhỉ?

m = [[0]*5]*3
m[0][3] = 999
print(m)

m1 = [[0,0,0,0,0],[0,0,0,0,0,],[0,0,0,0,0]]
m1[0][3] = 999
print(m1)

tmp = [0]*5 sẽ ra list có 5 số 0
Tuy nhiên [tmp]*3 lại ra [tmp, tmp, tmp] là 3 tham chiếu của cùng một list :smiley:

Thật ra, trong cả hai trường hợp chỉ có list chứa đựng là đối tượng mới duy nhất. Điểm khác nhau là (đối tượng) số 0 không thể biến thành số 1 (immutable).

6 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?