В python вы не можете инициализировать массив с заданным размером, просто указав размер, а также вам не нужно
Чтобы назначить данный список для state
, скопируйте это делается с помощью
if listt is not None:
self.state = list(listt)
Причина, по которой это сработало во втором случае, заключается в том, что вы создали список с 2 подсписками, поэтому создаются 2 поля, и это нормально, когда вы выполняете их итерацию, а также почему произошел сбой при попытке длины 3
state = [[2], [3]] # [[2], [3]], and not [[,,], [,,]]
Если вы хотите инициализировать пустой, в случае, если listt
- Нет, вы можете сделать
class node:
def __init__(self, m, n, listt=None):
self.not_in_place = -1
self.m = m
self.n = n
self.state = [[]] * m
if listt is not None:
self.state = list(listt)
def __str__(self):
return str(self.state)
if __name__ == '__main__':
start = [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
n = node(3, 3, start)
print(n) # [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
n = node(2, 3, None)
print(n) # [[], []]