Python List vs. Tuples (med exempel)

I den här artikeln kommer vi att lära oss viktiga skillnader mellan Listan och Tuples och hur man använder dessa två datastrukturer.

Listor och Tuples lagrar ett eller flera objekt eller värden i en specifik ordning. Objekten som lagras i en lista eller tupel kan vara av vilken typ som helst, inklusive ingentingstypen definierad av Inga nyckelord.

Listor och Tuples är likartade i de flesta sammanhang men det finns några skillnader som vi kommer att hitta i den här artikeln.

Syntaxskillnader

Syntax för lista och tupel är lite annorlunda. Listor omges av hakparenteser ()och Tuples omges av parentes ().

Exempel 1.1: Skapa lista kontra skapa tupel

 list_num = (1,2,3,4) tup_num = (1,2,3,4) print(list_num) print(tup_num)

Produktion:

 (1,2,3,4) (1,2,3,4)

Ovan definierade vi en variabel som heter list_num som innehåller en lista med nummer från 1till 4. Listan är omgiven av parenteser (). Vi definierade också en variabel tup_num; som innehåller ett tal av tal från 1till 4. Tupeln är omgiven av parentes ().

I python har vi type()funktion som ger den typ av objekt som skapas.

Exempel 1.2: Hitta typ av datastruktur med hjälp av typ () -funktionen

 type(list_num) type(tup_num)

Produktion:

 lista tuple

Muterbar lista vs oföränderliga tuples

Listan har en föränderlig karaktär, dvs. listan kan ändras eller modifieras efter att den skapats efter behov medan tuple har oföränderlig natur, dvs. tupel kan inte ändras eller modifieras efter att den skapats.

Exempel 2.1: Ändra en artikellista kontra Tuple

 list_num(2) = 5 print(list_num) tup_num(2) = 5

Produktion:

 (1,2,5,4) Traceback (senaste samtalet senast): Filen "python", rad 6, i TypeError: "tuple" -objekt stöder inte tilldelning av objekt

I ovanstående kod tilldelade vi 5list_num vid index 2och vi hittade 5vid index 2i output. Vi tilldelade 5också tup_num vid index 2och vi fick type error. Vi kan inte ändra tupeln på grund av dess oföränderliga natur.

Obs: Eftersom tupeln är oföränderlig är dessa fasta i storlek och listan varierar i storlek.

Tillgänglig verksamhet

Listor har mer inbyggd funktion än tuple. Vi kan använda dir((object))inbyggd funktion för att få alla tillhörande funktioner för lista och tuple.

Exempel 3.1: Listkatalog

 dir(list_num)

Produktion:

('__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__' __gt__ ',' __hash__ ',' __iadd__ ',' __imul__ ',' __init__ ',' __init_subclass__ ',' __iter__ ',' __le__ ',' __len__ ',' __lt__ ',' __mul__ ',' __ne__ ',' __n__ , '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear' kopiera ',' räkna ',' förläng ',' index ','insert ',' pop ',' remove ',' reverse ',' sort ')

Exempel 3.2: Tuple Directory

 dir(tup_num)

Produktion:

 ('__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewar__ __gt__ ',' __hash__ ',' __init__ ',' __init_subclass__ ',' __iter__ ',' __le__ ',' __len__ ',' __lt__ ',' __mul__ ',' __ne__ ',' __new__ ',' __reduce__ ','__' , '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index')

Vi kan tydligt se att det finns så många ytterligare funktioner associerade med en lista över en tupel. Vi kan göra insättnings- och pop-operation, ta bort och sortera element i listan med inbyggda funktioner som inte är tillgängliga i Tuple.

Storleksjämförelse

Tuples-operationen har mindre storlek än listan, vilket gör det lite snabbare men inte så mycket att nämna förrän du har ett stort antal element.

Exempel 5.1: Beräkna storleken på Lista 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__())

Produktion:

 a = 104 b = 120

I ovanstående kod har vi tupel a och lista b med samma objekt men storleken på tuple är mindre än listan.

Olika användningsfall

Vid första anblicken kan det tyckas att listor alltid kan ersätta tuplar. Men tuples är extremt användbara datastrukturer

  1. Att använda en tuple istället för en lista kan ge programmeraren och tolken en antydan om att data inte ska ändras.
  2. Tuples används ofta som motsvarighet till en ordlista utan nycklar för att lagra data. Till exempel,
     (('Swordfish', 'Dominic Sena', 2001), ('Snowden', 'Oliver Stone', 2016), ('Taxichaufför', 'Martin Scorsese', 1976))
    Ovanstående exempel innehåller tupler i listan som har en lista med filmer.
  3. Att läsa data är enklare när tuples lagras i en lista. Till exempel,
     ((2,4), (5,7), (3,8), (5,9))
    är lättare att läsa än
     ((2,4), (5,7), (3,8), (5,9))

Tuple kan också användas som nyckel i ordlistan på grund av deras hashable och oföränderliga natur medan listor inte används som nyckel i en ordlista eftersom listan inte kan hantera __hash__()och har en mutbar natur.

 key_val= (('alpha','bravo'):123) #Valid key_val = (('alpha','bravo'):123) #Invalid 

Viktiga punkter att komma ihåg:

  1. Den bokstavliga syntaxen för tuplerna visas med parenteser ()medan den bokstavliga syntaxen för listor visas med hakparenteser ().
  2. Listor har variabel längd, tuple har fast längd.
  3. Listan har föränderlig natur, tupel har oföränderlig natur.
  4. Listan har mer funktionalitet än tupeln.

Intressanta artiklar...