Python truy cập đến list thông qua reference cho nên khi bạn
thực ra bạn chỉ thêm vào box 2 references đến cùng một object values duy nhất. Vì thế, bạn thay đổi values kiểu gì thì 2 phần tử của box cũng luôn giống y sì nhau. Để tránh điều này, bạn có thể copy values ra một object khác nhưng cùng giá trị
# version 1
box=[]
values=[]
for i in range(2):
values.append('-')
for i in range(2):
box.append(values)
print(box[0] == box[1]) # True
print(box[0] is box[1]) # True
# version 2
box = []
values = []
for i in range(2):
values.append('-')
for i in range(2):
box.append(values.copy()) # or
box.append(values[:]) # or
box.append(list(values))
print(box[0] == box[1]) # True
print(box[0] is box[1]) # False