jestem nowicjuszem w Pythonie, ale rozumiem, że rzeczy nie powinny być wykonywane w ten sposób, więc należy wziąć pod uwagę następujące fragmenty kodu jako czysto :-) edukacyjnegomodyfikacja listy w pętli
jestem obecnie czytanie „Learning Python” i stara się w pełni zrozumieć następujący przykład:
>>> L = [1, 2, 3, 4, 5]
>>> for x in L:
... x += 1
...
>>> L
[1, 2, 3, 4, 5]
nie zrozumieć, jeśli to zachowanie było nieco związane z niezmienności typów numerycznych, więc Zabrakło mi następujący test:
>>> L = [[1], [2], [3], [4], [5]]
>>> for x in L:
... x += ['_']
...
>>> L
[[1, '_'], [2, '_'], [3, '_'], [4, '_'], [5, '_']]
Pytanie: co sprawia, że lista pozostaje niezmieniona w pierwszym kodzie i zmieniona w drugiej?
Moja intuicja jest to, że składnia jest mylące i że:
x += 1
liczbę całkowitą naprawdę oznaczax = x + 1
(a więc przypisywania nowego odniesienia)x += ['_']
dla listy naprawdę oznaczax.extend('_')
(zmieniając w ten sposób lista na miejscu)
Twoja intuicja jest poprawna –
, a dla kompletności "prawidłowym" sposobem na to jest '[x + 1 dla xw L]' – Kimvais
@Kimvais: Zakładamy, że chcesz utworzyć nową listę. – MattH