Итак, я пытаюсь создать вложенный список в Python на основе ширины и высоты. Это то, что у меня есть до сих пор:Python - динамический вложенный список
width = 4
height = 5
row = [None]*width
map = [row]*height
Теперь это явно не совсем верно. При печати он выглядит отлично:
[[None, None, None, None],
[None, None, None, None],
[None, None, None, None],
[None, None, None, None],
[None, None, None, None]]
Но попытка присвоить значение позиции следующим образом:
map[2][3] = 'foo'
я получаю:
[[None, None, None, 'foo'],
[None, None, None, 'foo'],
[None, None, None, 'foo'],
[None, None, None, 'foo'],
[None, None, None, 'foo']]
Очевидно, что это происходит потому, что каждый подсписок действительно просто ссылаясь на один и тот же объект, строку, так меняя одну, меняет их все. Так что это самое близкое, что у меня есть!
Как я могу динамически генерировать вложенный список? Благодаря!
Пока не точная копия, см: http://stackoverflow.com/questions/1605024/python-using-the-multiply-operator-to -create-copy-of-objects-in-lists – carl
'map()' - встроенная функция, это не рекомендуется переопределять. Найдите другое имя, при необходимости вы можете просто добавить '_'. –