In dit artikel zullen we de belangrijkste verschillen tussen de lijst en Tuples leren en hoe deze twee gegevensstructuren kunnen worden gebruikt.
Lijsten en Tuples slaan een of meer objecten of waarden op in een specifieke volgorde. De objecten die zijn opgeslagen in een lijst of tuple kunnen van elk type zijn, inclusief het niets-type dat is gedefinieerd door het trefwoord Geen.
Lijsten en Tuples zijn in de meeste context vergelijkbaar, maar er zijn enkele verschillen die we in dit artikel zullen vinden.
Syntaxisverschillen
De syntaxis van lijst en tuple is iets anders. Lijsten zijn tussen vierkante haken ()
en Tuples zijn tussen haakjes ()
.
Voorbeeld 1.1: een lijst maken versus een tupel maken
list_num = (1,2,3,4) tup_num = (1,2,3,4) print(list_num) print(tup_num)
Uitgang:
(1,2,3,4) (1,2,3,4)
Hierboven hebben we een variabele gedefinieerd met de naam lijst_getal die een lijst met getallen bevat van 1
tot 4
. De lijst staat tussen haakjes ()
. We hebben ook een variabele tup_num gedefinieerd; die een tupel van nummer van 1
tot bevat 4
. Het tupel is omgeven door haakjes ()
.
In python hebben we een type()
functie die het type object geeft dat is gemaakt.
Voorbeeld 1.2: Vind het type datastructuur met de functie type ()
type(list_num) type(tup_num)
Uitgang:
lijst tuple
Veranderlijke lijst versus onveranderlijke tupels
Lijst heeft een veranderlijk karakter, dwz lijst kan worden gewijzigd of aangepast nadat het is gemaakt volgens de behoeften, terwijl tuple een onveranderlijk karakter heeft, dwz tuple kan niet worden gewijzigd of aangepast nadat het is gemaakt.
Voorbeeld 2.1: Wijzig een itemlijst versus Tuple
list_num(2) = 5 print(list_num) tup_num(2) = 5
Uitgang:
(1,2,5,4) Traceback (meest recente oproep laatste): bestand "python", regel 6, in TypeError: 'tuple'-object ondersteunt geen itemtoewijzing
In bovenstaande code hebben we toegewezen 5
aan lijst_getal bij index 2
en we vonden 5
bij index 2
in uitvoer. We hebben ook toegewezen 5
aan tup_num bij index 2
en we hebben type error
. We kunnen het tupel niet wijzigen vanwege zijn onveranderlijke aard.
Opmerking: aangezien de tuple onveranderlijk is, zijn deze vast in grootte en zijn de lijst variabel in grootte.
Beschikbare bewerkingen
Lijsten hebben meer ingebouwde functie dan die van tuple. We kunnen de dir((object))
ingebouwde functie gebruiken om alle bijbehorende functies voor lijst en tuple te krijgen.
Voorbeeld 3.1: lijst Directory
dir(list_num)
Uitgang:
('__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute', __ ', __ __gt__ ',' __hash__ ',' __iadd__ ',' __imul__ ',' __init__ ',' __init_subclass__ ',' __iter__ ',' __le__ ',' __len__ ',' __lt__ ',' __mul__ ',' __ne__ ',' , '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear kopiëren ',' tellen ',' uitbreiden ',' index ','insert ',' pop ',' remove ',' reverse ',' sort ')
Voorbeeld 3.2: Tuple Directory
dir(tup_num)
Uitgang:
('__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem', ',' __ge__ ',' __gt__ ',' __hash__ ',' __init__ ',' __init_subclass__ ',' __iter__ ',' __le__ ',' __len__ ',' __lt__ ',' __mul__ ',' __ne__ ',' __new__ ',' __ __ '__reduce__', '__ne__' , '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index')
We kunnen duidelijk zien dat er zoveel extra functionaliteiten zijn verbonden aan een lijst over een tuple. We kunnen invoegen en pop-operaties uitvoeren, elementen in de lijst verwijderen en sorteren met ingebouwde functies die niet beschikbaar zijn in Tuple.
Grootte vergelijking
De werking van Tuples heeft een kleinere omvang dan die van de lijst, wat het een beetje sneller maakt, maar niet zo veel om over op te noemen totdat je een groot aantal elementen hebt.
Voorbeeld 5.1: Bereken de grootte van lijst vs. Tuple
a= (1,2,3,4,5,6,7,8,9,0) b= (1,2,3,4,5,6,7,8,9,0) print('a=',a.__sizeof__()) print('b=',b.__sizeof__())
Uitgang:
a = 104 b = 120
In bovenstaande code hebben we tupel a en lijst b met dezelfde items, maar de grootte van tupel is kleiner dan de lijst.
Verschillende gebruiksscenario's
Op het eerste gezicht lijkt het misschien dat lijsten altijd tupels kunnen vervangen. Maar tuples zijn buitengewoon nuttige gegevensstructuren
- Het gebruik van een tuple in plaats van een lijst kan de programmeur en de tolk een hint geven dat de gegevens niet mogen worden gewijzigd.
- Tuples worden vaak gebruikt als het equivalent van een woordenboek zonder sleutels om gegevens op te slaan. Bijvoorbeeld,
(('Swordfish', 'Dominic Sena', 2001), ('Snowden', 'Oliver Stone', 2016), ('Taxi Driver', 'Martin Scorsese', 1976))
Het bovenstaande voorbeeld bevat tuples in de lijst met een lijst met films. - Het lezen van gegevens is eenvoudiger als tuples in een lijst zijn opgeslagen. Bijvoorbeeld,
((2,4), (5,7), (3,8), (5,9))
is gemakkelijker te lezen dan((2,4), (5,7), (3,8), (5,9))
Tuple kan ook worden gebruikt als sleutel in een woordenboek vanwege hun hashable en onveranderlijke aard, terwijl lijsten niet als sleutel in een woordenboek worden gebruikt omdat lijst niet kan omgaan __hash__()
en een veranderlijk karakter heeft.
key_val= (('alpha','bravo'):123) #Valid key_val = (('alpha','bravo'):123) #Invalid
Belangrijkste punten om te onthouden:
- De letterlijke syntaxis van tupels wordt weergegeven door haakjes,
()
terwijl de letterlijke syntaxis van lijsten wordt weergegeven door vierkante haken()
. - Lijsten hebben een variabele lengte, tuple heeft een vaste lengte.
- Lijst heeft een veranderlijk karakter, tuple heeft een onveranderlijk karakter.
- Lijst heeft meer functionaliteit dan het tupel.