Tạo ma trận bằng list trong python

Xin chào mọi người, em đang học python, em biết cách tạo ma trận (3x2) bằng list thế này:

matrix = [[0]*2] * 3
matrix[0][1] = 2
print(*matrix)

Nhưng kỳ lạ là, em chỉ sửa 1 giá trị (0,1) nhưng nó lại sửa tất cả giá trị matrix[i][1] = 2. Em không biết tại sao. Mọi người xem và chỉ giúp em với, em xin cảm ơn mọi người.

[0] * 2 = tạo 1 mảng 2 phần tử [0, 0] -> khi này thành [[0, 0]] * 3
thì khi đó mảng [0, 0] được copy 3 lần

muốn 1 dòng thì xài list comprehension

matrix = [[0]*col_num for i in range(row_num)]
5 Likes

Dạ vâng, cảm ơn anh nhiều lắm :3

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