Python Tuple (z przykładami)

W tym artykule dowiesz się wszystkiego o krotkach Pythona. A dokładniej, czym są krotki, jak je tworzyć, kiedy ich używać i różne metody, z którymi powinieneś się zapoznać.

Wideo: listy i krotki Pythona

Krotka w Pythonie jest podobna do listy. Różnica między nimi polega na tym, że nie możemy zmienić elementów krotki po jej przypisaniu, podczas gdy możemy zmienić elementy listy.

Tworzenie krotki

Krotkę tworzy się poprzez umieszczenie wszystkich elementów (elementów) w nawiasach (), oddzielonych przecinkami. Nawiasy są opcjonalne, jednak warto ich używać.

Krotka może mieć dowolną liczbę elementów i mogą one być różnych typów (liczba całkowita, liczba zmiennoprzecinkowa, lista, łańcuch itp.).

 # Different types of tuples # Empty tuple my_tuple = () print(my_tuple) # Tuple having integers my_tuple = (1, 2, 3) print(my_tuple) # tuple with mixed datatypes my_tuple = (1, "Hello", 3.4) print(my_tuple) # nested tuple my_tuple = ("mouse", (8, 4, 6), (1, 2, 3)) print(my_tuple)

Wynik

 () (1, 2, 3) (1, 'Witaj', 3.4) ('mysz', (8, 4, 6), (1, 2, 3))

Krotkę można również utworzyć bez używania nawiasów. Nazywa się to pakowaniem krotek.

 my_tuple = 3, 4.6, "dog" print(my_tuple) # tuple unpacking is also possible a, b, c = my_tuple print(a) # 3 print(b) # 4.6 print(c) # dog

Wynik

 (3, 4,6, „pies”) 3 4,6 pies

Tworzenie krotki z jednym elementem jest nieco skomplikowane.

Umieszczenie jednego elementu w nawiasach nie wystarczy. Będziemy potrzebować końcowego przecinka, aby wskazać, że w rzeczywistości jest to krotka.

 my_tuple = ("hello") print(type(my_tuple)) # # Creating a tuple having one element my_tuple = ("hello",) print(type(my_tuple)) # # Parentheses is optional my_tuple = "hello", print(type(my_tuple)) # 

Wynik

 

Uzyskaj dostęp do elementów krotki

Istnieje wiele sposobów uzyskania dostępu do elementów krotki.

1. Indeksowanie

Możemy użyć operatora indeksu, ()aby uzyskać dostęp do elementu krotki, gdzie indeks zaczyna się od 0.

Tak więc krotka mająca 6 elementów będzie miała indeksy od 0 do 5. Próba uzyskania dostępu do indeksu spoza zakresu indeksów krotki (w tym przykładzie 6,7,…) spowoduje podniesienie wartości IndexError.

Indeks musi być liczbą całkowitą, więc nie możemy używać typu float ani innych typów. Spowoduje to TypeError.

Podobnie, dostęp do zagnieżdżonych krotek uzyskuje się za pomocą zagnieżdżonego indeksowania, jak pokazano w poniższym przykładzie.

 # Accessing tuple elements using indexing my_tuple = ('p','e','r','m','i','t') print(my_tuple(0)) # 'p' print(my_tuple(5)) # 't' # IndexError: list index out of range # print(my_tuple(6)) # Index must be an integer # TypeError: list indices must be integers, not float # my_tuple(2.0) # nested tuple n_tuple = ("mouse", (8, 4, 6), (1, 2, 3)) # nested index print(n_tuple(0)(3)) # 's' print(n_tuple(1)(1)) # 4

Wynik

 pkt 4

2. Indeksowanie ujemne

Python pozwala na ujemne indeksowanie swoich sekwencji.

Indeks -1 odnosi się do ostatniej pozycji, -2 do przedostatniej pozycji i tak dalej.

 # Negative indexing for accessing tuple elements my_tuple = ('p', 'e', 'r', 'm', 'i', 't') # Output: 't' print(my_tuple(-1)) # Output: 'p' print(my_tuple(-6))

Wynik

 tp

3. Krojenie

Możemy uzyskać dostęp do szeregu elementów w krotce, używając dwukropka operatora wycinania :.

 # Accessing tuple elements using slicing my_tuple = ('p','r','o','g','r','a','m','i','z') # elements 2nd to 4th # Output: ('r', 'o', 'g') print(my_tuple(1:4)) # elements beginning to 2nd # Output: ('p', 'r') print(my_tuple(:-7)) # elements 8th to end # Output: ('i', 'z') print(my_tuple(7:)) # elements beginning to end # Output: ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z') print(my_tuple(:))

Wynik

 ('r', 'o', 'g') ('p', 'r') ('i', 'z') ('p', 'r', 'o', 'g', 'r ',' a ',' m ',' i ',' z ')

Krojenie można najlepiej zwizualizować, rozważając, że indeks znajduje się między elementami, jak pokazano poniżej. Więc jeśli chcemy uzyskać dostęp do zakresu, potrzebujemy indeksu, który wycina część krotki.

Wycinanie elementów w Pythonie

Zmiana krotki

W przeciwieństwie do list, krotki są niezmienne.

Oznacza to, że po przypisaniu elementów krotki nie można zmienić. Jeśli jednak sam element jest zmiennym typem danych, takim jak lista, można zmienić jego zagnieżdżone elementy.

Możemy również przypisać krotkę do różnych wartości (ponowne przypisanie).

 # Changing tuple values my_tuple = (4, 2, 3, (6, 5)) # TypeError: 'tuple' object does not support item assignment # my_tuple(1) = 9 # However, item of mutable element can be changed my_tuple(3)(0) = 9 # Output: (4, 2, 3, (9, 5)) print(my_tuple) # Tuples can be reassigned my_tuple = ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z') # Output: ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z') print(my_tuple)

Wynik

 (4, 2, 3, (9, 5)) ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')

We can use + operator to combine two tuples. This is called concatenation.

We can also repeat the elements in a tuple for a given number of times using the * operator.

Both + and * operations result in a new tuple.

 # Concatenation # Output: (1, 2, 3, 4, 5, 6) print((1, 2, 3) + (4, 5, 6)) # Repeat # Output: ('Repeat', 'Repeat', 'Repeat') print(("Repeat",) * 3)

Output

 (1, 2, 3, 4, 5, 6) ('Repeat', 'Repeat', 'Repeat')

Deleting a Tuple

As discussed above, we cannot change the elements in a tuple. It means that we cannot delete or remove items from a tuple.

Deleting a tuple entirely, however, is possible using the keyword del.

 # Deleting tuples my_tuple = ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z') # can't delete items # TypeError: 'tuple' object doesn't support item deletion # del my_tuple(3) # Can delete an entire tuple del my_tuple # NameError: name 'my_tuple' is not defined print(my_tuple)

Output

 Traceback (most recent call last): File "", line 12, in NameError: name 'my_tuple' is not defined

Tuple Methods

Methods that add items or remove items are not available with tuple. Only the following two methods are available.

Some examples of Python tuple methods:

 my_tuple = ('a', 'p', 'p', 'l', 'e',) print(my_tuple.count('p')) # Output: 2 print(my_tuple.index('l')) # Output: 3

Output

 2 3

Other Tuple Operations

1. Tuple Membership Test

We can test if an item exists in a tuple or not, using the keyword in.

 # Membership test in tuple my_tuple = ('a', 'p', 'p', 'l', 'e',) # In operation print('a' in my_tuple) print('b' in my_tuple) # Not in operation print('g' not in my_tuple)

Output

 True False True

2. Iterating Through a Tuple

We can use a for loop to iterate through each item in a tuple.

 # Using a for loop to iterate through a tuple for name in ('John', 'Kate'): print("Hello", name)

Output

 Hello John Hello Kate

Advantages of Tuple over List

Since tuples are quite similar to lists, both of them are used in similar situations. However, there are certain advantages of implementing a tuple over a list. Below listed are some of the main advantages:

  • Zwykle używamy krotek dla heterogenicznych (różnych) typów danych i list dla jednorodnych (podobnych) typów danych.
  • Ponieważ krotki są niezmienne, iterowanie po krotce jest szybsze niż w przypadku list. Jest więc niewielki wzrost wydajności.
  • Krotki zawierające niezmienne elementy mogą służyć jako klucz do słownika. W przypadku list nie jest to możliwe.
  • Jeśli masz dane, które się nie zmieniają, zaimplementowanie ich jako krotki zagwarantuje, że pozostaną one chronione przed zapisem.

Interesujące artykuły...