В своем первом коде, внешний i
цикл:
world = []
for i in range(self.width):
world.append(None)
создает список None
:
world == [None, None, None, ...]
поэтому во внутреннем j
цикле, когда вы звоните
world[i].append(None)
вы пытаются найти:
None.append(None)
и вы не можете добавить None
! Внешний контур должен быть:
world.append([]) # an empty list
Затем внутренний цикл будет корректно работать с любым (None
, ""
и т.д.) вы хотите поместить в этих списках.
Стоит отметить, что вторая версия намного опережающая, чем первая, с (очевидно!) Меньшим потенциалом ошибки. Тем не менее, небольшое улучшение (как вы никогда не использовать x
или y
):
self.map = [[None for _ in range(width)] for _ in range(height)]
'numpy.zeros (ширина * высота) .resape ((ширина, высота))' ваш лучший, самый быстрый и простой способ сделать это ... по крайней мере imho ... плюс знакомство с массивами numpy на ранней стадии вам помогут тонны позже –