Quindi sto provando a generare un elenco annidato in Python basato su una larghezza e un'altezza. Questo è quello che ho finora:Python - Dynamic Nested List
width = 4
height = 5
row = [None]*width
map = [row]*height
Ora, questo ovviamente non è giusto. Quando stampata si guarda bene:
[[None, None, None, None],
[None, None, None, None],
[None, None, None, None],
[None, None, None, None],
[None, None, None, None]]
Ma il tentativo di assegnare un valore a una posizione in questo modo:
map[2][3] = 'foo'
ottengo:
[[None, None, None, 'foo'],
[None, None, None, 'foo'],
[None, None, None, 'foo'],
[None, None, None, 'foo'],
[None, None, None, 'foo']]
Chiaramente questo accade perché ogni sottoelenco è davvero basta fare riferimento allo stesso oggetto, riga, quindi cambiarne uno, cambiarli tutti. Quindi questo è il più vicino che ho!
Come posso generare dinamicamente un elenco annidato? Grazie!
Anche se non è un duplicato esatto, vedi: http://stackoverflow.com/questions/1605024/python-using-the-multiply-operator-to -create-copie-di-oggetti-in-liste – carl
'map()' è una funzione built-in, non è una buona idea sovrascriverla. Trova un altro nome, se necessario puoi semplicemente aggiungere '_'. –