Credevo di aver capito operazioni di affettamento Python, ma quando ho provato ad aggiornare un elenco a fette, mi sono confuso:Aggiornamento di un elenco a fette
>>> foo = [1, 2, 3, 4]
>>> foo[:1] = ['one'] # OK, foo updated
>>> foo
['one', 2, 3, 4]
>>> foo[:][1] = 'two' # why foo not updated?
>>> foo
['one', 2, 3, 4]
>>> foo[:][2:] = ['three', 'four'] # Again, foo not updated
>>> foo
['one', 2, 3, 4]
Perché non viene aggiornato dopo Foo foo[:][1] = 'two'
?
Aggiornamento: Forse non ho spiegato chiaramente le mie domande. So che quando si affetta, viene creato un nuovo elenco. Il mio dubbio è perché un'assegnazione delle sezioni aggiorni l'elenco (ad esempio foo[:1] = ['one']
), ma se ci sono due livelli di affettamento, non aggiorna l'elenco originale (ad esempio foo[:][2:] = ['three', 'four']
).
Hai usato 'numpy' nel passato, forse? Gli array di Numpy usano l'affettatura in modo diverso dagli elenchi Python. –
Per favore leggi https://en.wikipedia.org/wiki/Value_(computer_science)#lrvalue –
congratulazioni! hai scoperto [come clonare o copiare un elenco] (http://stackoverflow.com/a/2612815/3904031)! domanda successiva [quanto è andata a finire la copia?] (http://stackoverflow.com/a/26562235/3904031) – uhoh