30-50% off hundreds of digital assets! WordPress themes, video, music and more 30-50% Off Go to Sale
Advertisement
  1. Code
  2. Python
Code

Krótkie wprowadzenie do krotek w Pythonie

by
Difficulty:BeginnerLength:ShortLanguages:
This post is part of a series called A Smooth Refresher To Python.
A Smooth Refresher on Python's Dictionaries
A Smooth Refresher on Python's Conditional Statements

Polish (Polski) translation by Agnieszka Górczyńska (you can also view the original English article)

W poprzednich artykułach - łącza do nich znajdziesz na górze strony - omówiłem dwie niezwykle ważne koncepcje w Pythonie, bez zrozumienia których niemożliwe jest poznawanie kolejnych.

Ten artykuł stanowi kontynuację serii przedstawiającej różne zagadnienia dotyczące Pythona. Tym razem zajmę się krotkami. W ten sposób poznasz trzy najważniejsze koncepcje i będziesz mógł przejść do dalszego zgłębiania tajników Pythona.

Zatem od razu przechodzimy do krotek.

Czym jest krotka?

Jeśli poznałeś i zrozumiałeś listę, krotka również nie będzie trudna do opanowania. Pod wieloma względami jest podobna do listy, choć między wymienionymi typami istnieją dwie ważne różnice.

  1. Krotka jest niezmienna. Dlatego też po utworzeniu krotki nie można zmienić jej zawartości, a nawet wielkości, o ile wcześniej nie zostanie utworzona kopia tej krotki.
  2. Krotkę zapisujemy za pomocą nawiasu okrągłego  ( ) , a nie kwadratowego [ ].

Jak pewnie się domyślasz, krotka to zbiór uporządkowanych obiektów, które mogą być dowolnego typu (na przykład ciąg tekstowy, lista, słownik, inna krotka itd.). Jednak w przeciwieństwie do słownika, w którym dostęp do elementu odbywa się za pomocą klucza, w przypadku krotki dostęp odbywa się za pomocą indeksu (wartość przesunięcia).  Należy koniecznie zwrócić uwagę na fakt, że krotka zawiera odwołania do przechowywanych w sobie obiektów.  

Zanim przejdę do omawiania operacji na krotkach, spójrz na przykładową krotkę:

tup = (1)

To jest prosta krotka składająca się z jednego elementu przedstawiającego wartość w postaci liczby całkowitej.  Dane wyjściowe tej krotki to 1.

Kolejny przykład pokazuje krotkę składającą się z trzech elementów, z których każdy przedstawia inny typ obiektu:

tup = (31,'abder',4.0)

Dane wyjściowe powyższego polecenia to:

(31,'abder',4.0)

Przedstawioną wcześniej krotkę można zapisać bez użycia nawiasu, jak pokazałem poniżej.

tup = 31,'abder',4.0

Jak widać krotki są bardzo elastyczne, prawda?

W ostatnim przykładzie pokazałem, jak wygląda krotka zagnieżdżona:

nested_tuple = ('ID', ('abder', 1234))

Operacje na krotkach

Przyjrzyjmy się teraz wybranym operacjom, które można przeprowadzać na krotkach.

Konkatenacja

Konkatenacja to po prostu łączenie poszczególnych krotek ze sobą. Przyjmujemy założenie o istnieniu dwóch poniższych krotek. 

tuple1 = (1,2,3,4,5)

tuple2 = (6,7,8,9,10)

Aby połączyć krotki  tuple1 i tuple2 należy użyć następującego polecenia:

tup = tuple1 + tuple2 

Zwróć uwagę, że do przeprowadzenia tej operacji użyliśmy operatora +. Otrzymujemy pokazane poniżej dane wyjściowe.

(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) 

Powtórzenie

W celu powtórzenia krotki należy po prostu użyć operatora *. Jeśli chcesz trzykrotnie powtórzyć krotkę tuple1 , użyj poniższego polecenia.

tuple1 * 3 

Powyższe polecenie wygeneruje następujące dane wyjściowe:

(1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5)    

Przynależność

Aby sprawdzić, czy dany element znajduje się w krotce, używamy polecenia in, jak pokazałem poniżej.

7 in tuple1

Wartością zwrotną tego polecenia będzie False, ponieważ 7 nie znajduje się w krotkce tuple1.

Wyszukiwanie

Aby wskazać, gdzie w krotce znajduje się konkretny element, używamy metody index. Na przykład, jeśli chcesz określić położenie elementu 5 w krotce tuple1, użyj poniższego polecenia.

tuple1.index(5)

W tym przypadku wartością zwrotną będzie liczba 4, która jest indeksem elementu 5.

Zliczanie

Ciekawą operacją na krotkach jest zliczanie, ile razy dany element występuje w krotce. Przyjmujemy założenie o istnieniu poniższej krotki:

tuple3 = (65,67,5,67,34,76,67,231,98,67)

Jeśli chcesz sprawdzić liczbę wystąpień elementu  67 w krotce tuple3, użyj poniższego polecenia:

tuple3.count(67)

Wynikiem tego polecenia powinna być liczba 4.

Dostęp do element za pomocą Indeksu

Dostęp do elementu krotki można uzyskać również za pomocą jego indeksu. Dlatego też jeśli chcesz uzyskać dostęp do określonego indeksem 5 elementu krotki tuple3, użyj poniższego polecenia:

tuple3[4]

Wynikiem działania powyższego wywołania jest 34.

Indeks może mieć także wartość ujemną, wtedy zliczanie elementów rozpoczyna się od końca krotki. Stąd polecenie  tuple3[-6] zwraca wartość 34 - przy założeniu, że zakres ujemnych indeksów w krotce tuples3 to [-1, -10].

Co się stanie po wybraniu indeksu wykraczającego poza krotkę? Tego rodzaju sytuacja wystąpi w przypadku użycia polecenia  tuples3[-11]. Oto prawdopodobny wynik wykonania powyższego polecenia:

Traceback (most recent call last):

File "tuple.py", line 2, in <module>

print tuple3[-11]

IndexError: tuple index out of range

Zauważ, że indeksy ujemne zaczynają się od -1. Dlatego użycie indeksu -0 będzie miało taki sam skutek, jak w przypadku indeksu 0. Wynikiem wykonania polecenia tuples3[-0] będzie 65.

Tworzenie wycinków

W odróżnieniu od indeksowania, w wyniku którego otrzymujemy jeden element, skutkiem tworzenia wycinka jest sekwencja elementów. Poniższe polecenie jest przykładem tworzenia wycinka:

tuples3[2:5]

Wynik wykonania tego polecenia może na początku wydawać się zaskakujący:

(5, 67, 34)

Zwróć uwagę na brak liczby 76 w wyniku, choć w rzeczywistości ten element ma indeks 5. Otrzymaliśmy pokazany wynik, ponieważ w przypadku tworzenia wycinków, indeks start zawsze jest uwzględniany w wyniku, natomiast indeks end nie. Stąd zapis end - 1.

Spójrz na kolejny przykład.

tuple3[:4]

Powyższe polecenie wygeneruje następujące dane wyjściowe: 

(65, 67, 5, 67)

A teraz mała zagadka dla Ciebie. Co otrzymamy w wyniku wykonania poniższego polecenia?

tuple3[4:]

Podsumowanie

Więcej informacji na temat krotek znajdziesz w dokumentacji Pythona. Jak pewnie zauważyłeś, chociaż krotki bardzo przypominają listy, to w porównaniu do nich mają mniej metod. Wynika to z faktu, że jak już wcześniej wspomniałem, krotki pozostają niezmienne, czyli ich zawartości nie można zmodyfikować.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.