13.1 Dodawanie elementów
Krotki to niezmienne obiekty. Po stworzeniu krotki nie można jej zmienić. Ale bardzo często, nawet jeśli obiektu nie można zmienić, może być potrzebna jego zmieniona kopia.
Dokładnie to samo zrobiono z klasą str
— ma ona kilkadziesiąt metod, które nie zmieniają oryginalnego obiektu str
, ale zwracają nowy ciąg, odpowiadający istocie wywołanej metody.
Twórcy Pythona mogli dodać do klasy tuple
metody, które by zwracały nowy obiekt przy próbie zmiany krotki. Ale tego nie zrobili. Może aby nas nie zmylić lub z innego powodu.
Dlatego wszystkie zmiany krotki odbywają się według poniższego schematu:
list = list(krotka)
zmieniamy list tutaj
krotka2 = tuple(list)
append()
:
Na przykład chcesz dodać element do krotki, oto jak mogłoby to wyglądać:
my_tuple = (1, 2, 3)
my_list = list(my_tuple)
my_list.append(4) # dodajemy element do listy
my_new_tuple = tuple(my_list)
Dodanie grupy elementów — metody extend()
:
Metody extend()
pozwala dodać do listy kilka elementów jednocześnie. Jako argument metoda przyjmuje iterowalny obiekt (np. inną listę, krotkę, zbiór):
my_tuple = (1, 2, 3, 4)
my_list = list(my_tuple)
my_list.extend((5, 6)) # dodajemy elementy do listy
my_new_tuple = tuple(my_list)
Wstawianie w środek — metody insert()
Metody insert()
dodaje element na wskazaną pozycję w liście. Ta metoda przyjmuje dwa argumenty: indeks, pod który ma być umieszczony element, oraz sam element:
my_tuple = (1, 2, 3, 4)
my_list = list(my_tuple)
my_list.insert(0, 0) # dodajemy 0 na samym początku listy
my_new_tuple = tuple(my_list)
13.2 Zmiana elementów
Jeśli chcesz zmienić jakiś element krotki, nadal trzymamy się schematu:
list = list(krotka)
# zmieniamy list tutaj
krotka2 = tuple(list)
Zamienimy pierwszy element krotki z ostatnim wartością, a ostatni z pierwszą. Oto kod, którego do tego potrzeba:
my_tuple = (1, 2, 3, 4)
my_list = list(my_tuple)
my_list[0], my_list[-1] = my_list[-1], my_list[0] # zamieniamy wartości miejscami
my_new_tuple = tuple(my_list)
print(my_new_tuple) # (4, 2, 3, 1)
13.3 Usuwanie elementów
Usuwamy elementy z krotki według tego samego schematu.
Powiedzmy, że chcemy usunąć z krotki określoną wartość
atuple = ("apple", "banana", "cherry")
alist = list(atuple)
alist.remove("apple")
atuple = tuple(alist)
print(atuple) # ('banana', 'cherry')
Zwróć uwagę, że na końcu przypisujemy nowy obiekt tuple do zmiennej, która wcześniej przechowywała odnośnik do oryginalnego tuple
. Tak można, ale oryginalny tuple
wcale się nie zmienia. I jeśli gdzieś wyżej w kodzie była na niego referencja, pozostanie ona wskazująca na oryginalny tuple
.
Usuńmy teraz ostatni element z krotki.
Oto jak będzie wyglądał kod:
atuple = ("apple", "banana", "cherry")
alist = list(atuple)
alist.pop() # usuwamy ostatni element
atuple = tuple(alist)
print(atuple) # ('apple', 'banana')
Myślę, że logika jest dla ciebie jasna. Nie można usuwać elementów z krotki, ale jeśli bardzo się chce, to można 😊
GO TO FULL VERSION