2013-04-16 14 views
5

Czy poniższe elementy są bezpieczne?Czy można bezpiecznie przypisać listę do oryginalnej listy?

x = [1, 2, 3, 4] 
x = [y+5 for y in x] 

Czy lista zrozumieniem ocenia najpierw, tworząc nową listę, a następnie przypisać tę nową listę do X? Powiedziano mi kiedyś, że zmiana listy podczas iteracji nad nią jest niebezpieczną operacją.

+0

Zmiana listy podczas iteracji to nie to samo co powtarzanie i przypisywanie wyniku. –

Odpowiedz

5

Nie zmieniają listę podczas iteracji nad nim, tworzysz zupełnie nowy listę i wtedy, gdy zostały ocenione, to są wiążące go do nazwy x więc wszystko jest bezpieczne.

3

Tak, to jest bezpieczne.

Jak wspomniano, prawa strona jest oceniana jako pierwsza, a następnie jej wynik (całkowicie nowa lista) jest przypisany do nazwy x. Masz rację, że zmiana listy podczas iteracji nie jest bezpieczna, ale to nie dzieje się w próbce Twojego kodu, więc nie martw się.

Powiązane problemy