yo soy un recién llegado a Pitón pero entiendo que las cosas no se deben hacer de esta manera, así que tenga en cuenta los siguientes fragmentos de código como :-) puramente educativamodificación de lista en un bucle
estoy actualmente leer 'Learning Python' y tratando de entender completamente el siguiente ejemplo:
>>> L = [1, 2, 3, 4, 5]
>>> for x in L:
... x += 1
...
>>> L
[1, 2, 3, 4, 5]
yo no entendía si este comportamiento era algo relacionado con la inmutabilidad de los tipos numéricos, así que he ejecute la prueba siguiente:
>>> L = [[1], [2], [3], [4], [5]]
>>> for x in L:
... x += ['_']
...
>>> L
[[1, '_'], [2, '_'], [3, '_'], [4, '_'], [5, '_']]
Pregunta: ¿Qué hace que la lista no se modifique en el primer código y se modifique en el segundo?
Mi intuición es que la sintaxis es engañosa y que:
x += 1
para un número entero que realmente significax = x + 1
(asignando así una nueva referencia)x += ['_']
para obtener una lista realmente significax.extend('_')
(cambiando así la lista en el lugar)
su intuición es correcta –
y, para completar, la forma "correcta" de hacerlo es '[x + 1 para x en L] ' – Kimvais
@Kimvais: eso supone que desea crear una nueva lista. – MattH