Rozwiązany

Zmieniłem kopię listy, a zmieniła się też oryginalna

OliviaPyAutor
a = [1, 2, 3]
b = a
b[0] = 99
print(a)  # [99, 2, 3]
6

Komentarze 5

Zaloguj się, żeby dołączyć do dyskusji.

Zaloguj się Załóż konto
  1. ZosiaN Rozwiązanieodpowiedzi: 1

    b = a nie kopiuje listy, tylko daje jej drugą nazwę. Obie zmienne wskazują ten sam obiekt.

    Kopia: b = a.copy() albo b = a[:] albo b = list(a).

    6
    1. OliviaPyAutor

      Aha, czyli to te "etykiety" z przykładu o typowaniu dynamicznym!

      -1
    2. LiamByteodpowiedzi: 1

      Dla list zagnieżdżonych potrzebna jest głęboka kopia: import copy; b = copy.deepcopy(a).

      2
      1. SophieDev

        Dobra uwaga, .copy() kopiuje tylko pierwszy poziom.

        4
      2. NoahLoops

        To samo dzieje się, gdy przekazujesz listę do funkcji. Funkcja może zmienić listę wywołującego.

        6