io sono un nuovo arrivato a Python ma capisco che le cose non dovrebbero essere fatte in questo modo, quindi si prega di prendere in considerazione i seguenti frammenti di codice come puramente :-) educativoList modifica in un ciclo
Sono attualmente la lettura di 'Learning Python' e cercando di comprendere appieno il seguente esempio:
>>> L = [1, 2, 3, 4, 5]
>>> for x in L:
... x += 1
...
>>> L
[1, 2, 3, 4, 5]
non capivo se questo comportamento è stato in qualche modo legati alla immutabilità dei tipi numerici, quindi ho eseguito il seguente test:
>>> L = [[1], [2], [3], [4], [5]]
>>> for x in L:
... x += ['_']
...
>>> L
[[1, '_'], [2, '_'], [3, '_'], [4, '_'], [5, '_']]
Domanda: cosa rende l'elenco invariato nel primo codice e modificato nel secondo?
La mia intuizione è che la sintassi è fuorviante e che:
x += 1
per un intero significa veramentex = x + 1
(assegnando in tal modo un nuovo riferimento)x += ['_']
per una lista davvero significax.extend('_')
(modificando così il elenco sul posto)
l'intuizione è corretta –
e per completezza, il modo "corretto" per farlo è '[x + 1 per x in L]' – Kimvais
@Kimvais: presuppone che si desideri creare un nuovo elenco. – MattH