Python-lijst versus Tuples (met voorbeelden)

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 1tot 4. De lijst staat tussen haakjes (). We hebben ook een variabele tup_num gedefinieerd; die een tupel van nummer van 1tot 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 5aan lijst_getal bij index 2en we vonden 5bij index 2in uitvoer. We hebben ook toegewezen 5aan tup_num bij index 2en 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

  1. 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.
  2. 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.
  3. 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:

  1. De letterlijke syntaxis van tupels wordt weergegeven door haakjes, ()terwijl de letterlijke syntaxis van lijsten wordt weergegeven door vierkante haken ().
  2. Lijsten hebben een variabele lengte, tuple heeft een vaste lengte.
  3. Lijst heeft een veranderlijk karakter, tuple heeft een onveranderlijk karakter.
  4. Lijst heeft meer functionaliteit dan het tupel.

Interessante artikelen...