Así que estoy tratando de generar una lista anidada en Python basada en un ancho y una altura. Esto es lo que tengo hasta ahora:Python - Lista dinámica anidada
width = 4
height = 5
row = [None]*width
map = [row]*height
Ahora, esto obviamente no es del todo correcto. Cuando impresa se ve bien:
[[None, None, None, None],
[None, None, None, None],
[None, None, None, None],
[None, None, None, None],
[None, None, None, None]]
Pero intentar asignar un valor a una posición así:
map[2][3] = 'foo'
me sale:
[[None, None, None, 'foo'],
[None, None, None, 'foo'],
[None, None, None, 'foo'],
[None, None, None, 'foo'],
[None, None, None, 'foo']]
Es evidente que esto sucede porque cada sublista es realmente solo haciendo referencia al mismo objeto, hilera, para cambiar uno, los cambia a todos. ¡Así que esto es lo más cercano que tengo!
¿Cómo puedo generar dinámicamente una lista anidada? ¡Gracias!
Aunque no es un duplicado exacto, ver: http://stackoverflow.com/questions/1605024/python-using-the-multiply-operator-to -create-copies-of-objects-in-lists – carl
'map()' es una función incorporada, no es una buena idea anularla. Encuentre otro nombre; si es necesario, puede agregar '_'. –