Python использует передачу по ссылке, когда список назначен другой переменной списка, как в вашем случае, поэтому изменения происходят по адресу платы, когда изменения вносятся в binit, т.е. и доска, и bint являются одними и теми же объектами в Память. Ниже приведен небольшой пример, чтобы понять это:
listA = [0]
listB = listA
listB.append(1)
print("List B: " + str(listB))
print("List A: " + str(listA))
print("Address of listB: " + hex(id(listB)))
print("Address of listA: " + hex(id(listA)))
Приведенный выше код генерирует следующие отпечатки, обратите внимание, что адрес может меняться от запуска к запуску, но он должен быть одинаковым для списков A и listB:
List B: [0, 1]
List A: [0, 1]
Address of listB: 0x1d146de5148
Address of listA: 0x1d146de5148
Для создания нового объекта для listB, пожалуйста, используйте глубокое копирование. Глубокая копия создает новый составной объект, а затем рекурсивно вставляет в него копии объектов, найденных в оригинале. например, ниже:
import copy
listA = [0]
listB = copy.deepcopy(listA)
listB.append(1)
print("List B: " + str(listB))
print("List A: " + str(listA))
print("Address of listB: " + hex(id(listB)))
print("Address of listA: " + hex(id(listA)))
Приведенный выше пример использования распечаток с глубоким копированием, который показывает, что при глубоком копировании адрес listB был изменен, и изменение произошло только для listB:
List B: [0, 1]
List A: [0]
Address of listB: 0x23a95f8e288
Address of listA: 0x23a95f8e248