Python-luettelo vs. tuples (esimerkkien avulla)

Tässä artikkelissa opitaan tärkeimmät erot luettelon ja tuplien välillä ja kuinka käyttää näitä kahta tietorakennetta.

Luettelot ja tuplit tallentavat yhden tai useamman objektin tai arvon tietyssä järjestyksessä. Luetteloon tai sarjaan tallennetut objektit voivat olla minkä tahansa tyyppisiä, mukaan lukien Ei mitään -hakusanalla määritelty ei-tyypin tyyppi.

Luettelot ja tuplit ovat samanlaisia ​​useimmissa yhteyksissä, mutta tässä artikkelissa on joitain eroja.

Syntaksierot

Luettelon ja dupleksin syntakse on hieman erilainen. Luetteloita ympäröivät hakasulkeet ()ja tuplia ympäröivät sulkeet ().

Esimerkki 1.1: Luettelon luominen vs. Tuplen luominen

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

Tuotos:

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

Edellä määriteltiin muuttuja nimeltä list_num, joka pitää sisällään luettelon numeroista 1kohtaan 4. Luetteloa ympäröivät sulkeet (). Määritimme myös muuttujan tup_num; joka sisältää monikko numeron 1ja 4. Tuplea ympäröi sulkeet ().

Pythonissa meillä on type()funktio, joka antaa luodun objektin tyypin.

Esimerkki 1.2: Etsi tietorakenteen tyyppi käyttämällä type () -funktiota

 type(list_num) type(tup_num)

Tuotos:

 luettelo kaksinkertainen

Muuttuva luettelo vs. muuttamattomat joukot

Luettelolla on luonteeltaan muutettavissa oleva ominaisuus, toisin sanoen luetteloa voidaan muuttaa tai muokata sen luomisen jälkeen tarpeen mukaan, kun taas tuplella on muuttumaton luonne, toisin sanoen sitä ei voi muuttaa tai muokata luomisen jälkeen.

Esimerkki 2.1: Kohdeluettelon muokkaaminen vs. Tuple

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

Tuotos:

 (1,2,5,4) Traceback (viimeisin puhelu viimeisin): Tiedosto "python", rivi 6, TypeError: 'tuple' -objektissa ei tueta kohteen määritystä

Yllä olevassa koodissa osoitimme 5list_num at index 2ja löysimme 5indeksin 2tuotoksesta. Lisäksi osoitimme 5tup_num indeksille 2ja saimme type error. Emme voi muokata duplettia sen muuttumattomuuden vuoksi.

Huomaa: Koska sekvenssi on muuttumaton, ne ovat kiinteän kokoisia ja luettelo kooltaan vaihteleva.

Käytettävissä olevat toiminnot

Luetteloilla on enemmän sisäänrakennettua toimintoa kuin dupleksilla. Voimme käyttää dir((object))sisäänrakennettua toimintoa saadaksesi kaikki siihen liittyvät toiminnot luettelolle ja toisinnolle.

Esimerkki 3.1: Luettelohakemisto

 dir(list_num)

Tuotos:

('__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__get __gt__ ',' __hash__ ',' __iadd__ ',' __imul__ ',' __init__ ',' __init_subclass__ ',' __iter__ ',' __le__ ',' __len__ ',' __lt__ ',' __mul__ ',' __ne__ ',' __ne____ ' , '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'liitä', 'lisää', copy ',' count ',' laajenna ',' hakemisto ','lisää ',' pop ',' poista ',' taaksepäin ',' lajittele ')

Esimerkki 3.2: Tuplen hakemisto

 dir(tup_num)

Tuotos:

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

Voimme selvästi nähdä, että luetteloon liittyy niin monia lisätoimintoja, jotka ovat luettelossa tuplan päällä.Voimme lisätä ja avata toimintoja, poistaa ja lajitella elementtejä luettelosta sisäänrakennetuilla toiminnoilla, jotka eivät ole käytettävissä Tuplessa.

Kokovertailu

Tuples-operaation koko on pienempi kuin luettelon, mikä tekee siitä hieman nopeamman, mutta ei niin paljon mainittavaa, kunnes sinulla on valtava määrä elementtejä.

Esimerkki 5.1: Laske luettelon koko verrattuna 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__())

Tuotos:

 a = 104 b = 120

Yllä olevassa koodissa meillä on dupleksi a ja luettelo b, joissa on samat kohteet, mutta rivin koko on pienempi kuin luettelo.

Eri käyttötapaukset

Ensi silmäyksellä saattaa tuntua, että luettelot voivat aina korvata joukot. Mutta joukot ovat erittäin hyödyllisiä tietorakenteita

  1. Jos käytät listaa luettelon sijasta, ohjelmoija ja tulkki voivat antaa vihjeen siitä, että tietoja ei pitäisi muuttaa.
  2. Tuplia käytetään yleisesti sanaston vastaavuutena ilman avaimia tietojen tallentamiseen. Esimerkiksi,
     (('Miekkakala', 'Dominic Sena', 2001), ('Snowden', 'Oliver Stone', 2016), ('Taksinkuljettaja', 'Martin Scorsese', 1976))
    Yllä oleva esimerkki sisältää joukkoa luettelossa, jossa on luettelo elokuvista.
  3. Tietojen lukeminen on yksinkertaisempaa, kun joukot tallennetaan luetteloon. Esimerkiksi,
     ((2,4), (5,7), (3,8), (5,9))
    on helpompi lukea kuin
     ((2,4), (5,7), (3,8), (5,9))

Tuplea voidaan käyttää myös avainsanana sanakirjoissa, koska sillä on hajautettava ja muuttumaton luonne, kun taas luetteloita ei käytetä avainsanana sanakirjassa, koska luettelo ei kykene käsittelemään __hash__()ja sillä on muuttuva luonne.

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

Tärkeimmät muistettavat asiat:

  1. Tuplien kirjaimellinen syntaksit on esitetty sulkeissa, ()kun taas luetteloiden kirjaimellinen syntaksit on esitetty hakasulkeissa ().
  2. Luetteloilla on vaihteleva pituus, kaksinkertaisella on kiinteä pituus.
  3. Luettelolla on muuttuva luonne, kaksinkertaisella on muuttumaton luonne.
  4. Luettelossa on enemmän toimintoja kuin tuplassa.

Mielenkiintoisia artikkeleita...