Python Tuple (med exempel)

I den här artikeln lär du dig allt om Python-tuples. Mer specifikt, vad är tuplar, hur man skapar dem, när man ska använda dem och olika metoder du bör känna till.

Video: Python-listor och tuples

En tuple i Python liknar en lista. Skillnaden mellan de två är att vi inte kan ändra elementen i en tupel när den har tilldelats medan vi kan ändra elementen i en lista.

Skapa en Tuple

En tuple skapas genom att placera alla objekt (element) inom parentes (), åtskilda med kommatecken. Parenteserna är valfria, men det är bra att använda dem.

En tupel kan ha valfritt antal objekt och de kan vara av olika typer (heltal, flottör, lista, sträng, etc.).

 # 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)

Produktion

 () (1, 2, 3) (1, 'Hej', 3.4) ('mus', (8, 4, 6), (1, 2, 3))

En tuple kan också skapas utan att använda parenteser. Detta kallas tupelförpackning.

 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

Produktion

 (3, 4.6, 'hund') 3 4.6 hund

Att skapa en tuple med ett element är lite knepigt.

Att ha ett element inom parentes räcker inte. Vi behöver ett bakåtkomma för att indikera att det faktiskt är en tupel.

 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)) # 

Produktion

 

Åtkomst till Tuple-element

Det finns olika sätt på vilka vi kan komma åt elementen i en tupel.

1. Indexering

Vi kan använda indexoperatören för ()att komma åt ett objekt i en tuple, där indexet börjar från 0.

Så, en tupel med 6 element kommer att ha index från 0 till 5. Att försöka komma åt ett index utanför tupleindexområdet (6,7, … i detta exempel) kommer att höja ett IndexError.

Indexet måste vara ett heltal, så vi kan inte använda float eller andra typer. Detta kommer att resultera i TypeError.

På samma sätt nås kapslade tuplar med kapslad indexering, som visas i exemplet nedan.

 # 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

Produktion

 pkt 4

2. Negativ indexering

Python tillåter negativ indexering för dess sekvenser.

Indexet -1 avser den sista posten, -2 den näst sista posten och så vidare.

 # 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))

Produktion

 tp

3. Skivning

Vi kan få åtkomst till en rad föremål i en tuple genom att använda skivoperatorns kolon :.

 # 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(:))

Produktion

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

Skivning kan bäst visualiseras genom att betrakta indexet som mellan elementen som visas nedan. Så om vi vill komma åt ett intervall behöver vi indexet som kommer att skära delen från tupeln.

Elementskivning i Python

Ändra en Tuple

Till skillnad från listor är tuplar oföränderliga.

Detta innebär att element i en tuple inte kan ändras när de har tilldelats. Men om elementet i sig är en muterbar datatyp som en lista kan dess kapslade objekt ändras.

Vi kan också tilldela en tuple till olika värden (omfördelning).

 # 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)

Produktion

 (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:

  • Vi använder vanligtvis tuples för heterogena (olika) datatyper och listor för homogena (liknande) datatyper.
  • Eftersom tuplarna är oföränderliga är det snabbare att itera genom en tupel än med listan. Så det finns en liten prestationsökning.
  • Tuples som innehåller oföränderliga element kan användas som en nyckel för en ordbok. Med listor är det inte möjligt.
  • Om du har data som inte ändras garanterar du att den förblir skrivskyddad genom att implementera den som tuple.

Intressanta artiklar...