30/09/2018, 22:09
List 2D trong Python
box=[]
values=[]
for i in range(2):
values.append('-')
for i in range(2):
box.append(values)
box[0][1]='P'
print (box)
Sao lúc chạy nó in ra :
[[’-’, ‘P’], [’-’, ‘P’]]
nhỉ ạ?
để nó in ra
[[’-’, ‘P’], [’-’, ‘-’]] thi làm thế nào ạ?
Bài liên quan
2 cái giống nhau là do cùng gán đến values. Để tạo một values khác của box, bạn thêm dòng này trước box.append
values=[]
và chuyển vòng for khởi tạo cho values xuống dưới dòng đóPython truy cập đến list thông qua
reference
cho nên khi bạnthực ra bạn chỉ thêm vào
box
2references
đến cùng một objectvalues
duy nhất. Vì thế, bạn thay đổivalues
kiểu gì thì 2 phần tử củabox
cũng luôn giống y sì nhau. Để tránh điều này, bạn có thể copyvalues
ra một object khác nhưng cùng giá trị