I denne artikel lærer du alt om Python-tupler. Mere specifikt, hvad er tupler, hvordan man opretter dem, hvornår man skal bruge dem og forskellige metoder, du skal være fortrolig med.
Video: Pythonlister og tupler
En tuple i Python svarer til en liste. Forskellen mellem de to er, at vi ikke kan ændre elementerne i en tuple, når den først er tildelt, mens vi kan ændre elementerne på en liste.
Oprettelse af en Tuple
En tuple oprettes ved at placere alle elementerne (elementerne) inden for parenteser ()
adskilt med kommaer. Parenteserne er valgfri, men det er en god praksis at bruge dem.
En tuple kan have et vilkårligt antal elementer, og de kan være af forskellige typer (heltal, float, liste, streng osv.).
# 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 også oprettes uden brug af parenteser. Dette er kendt som dobbeltpakning.
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
Det er lidt vanskeligt at oprette en tuple med et element.
At have et element inden for parentes er ikke nok. Vi har brug for et efterfølgende komma for at indikere, at det faktisk er en tuple.
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
Adgang til Tuple-elementer
Der er forskellige måder, hvorpå vi kan få adgang til elementerne i en tuple.
1. Indeksering
Vi kan bruge indeksoperatoren ()
til at få adgang til et element i en tuple, hvor indekset starter fra 0.
Så en tuple med 6 elementer vil have indekser fra 0 til 5. At forsøge at få adgang til et indeks uden for tupleindeksområdet (6,7,… i dette eksempel) hæver et IndexError
.
Indekset skal være et heltal, så vi kan ikke bruge float eller andre typer. Dette vil resultere i TypeError
.
Ligeledes fås indlejrede tuples ved hjælp af indlejret indeksering, som vist i eksemplet nedenfor.
# 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 indeksering
Python tillader negativ indeksering af dens sekvenser.
Indekset på -1 refererer til den sidste vare, -2 til den næstsidste vare og så videre.
# 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. Udskæring
Vi kan få adgang til en række emner i en tuple ved hjælp af udskæringsoperatorens 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 ')
Skæring kan bedst visualiseres ved at betragte indekset som mellem elementerne som vist nedenfor. Så hvis vi ønsker at få adgang til et interval, har vi brug for det indeks, der vil skære delen fra tuplen.
Elementskæring i PythonÆndring af en tuple
I modsætning til lister er tupler uforanderlige.
Dette betyder, at elementer i en tuple ikke kan ændres, når de først er tildelt. Men hvis elementet i sig selv er en ændret datatype som en liste, kan dets indlejrede emner ændres.
Vi kan også tildele en tuple til forskellige værdier (omfordeling).
# 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 bruger generelt tupler til heterogene (forskellige) datatyper og lister til homogene (lignende) datatyper.
- Da tupler er uforanderlige, er iterering gennem en tuple hurtigere end med listen. Så der er et lille ydeevne boost.
- Tuples, der indeholder uforanderlige elementer, kan bruges som en nøgle til en ordbog. Med lister er dette ikke muligt.
- Hvis du har data, der ikke ændres, vil implementering af dem som tuple garantere, at de forbliver skrivebeskyttet.