Pythoni loend vs komplektid (koos näidetega)

Selles artiklis õpime loendi ja koondarvude peamisi erinevusi ning nende kahe andmestruktuuri kasutamist.

Loendid ja koondarvud salvestavad ühe või mitu objekti või väärtust kindlas järjekorras. Loendis või ruudus olevad objektid võivad olla mis tahes tüüpi, kaasa arvatud märksõnaga Puudub midagi määratletud tüüpi.

Loendid ja loendid on enamikus kontekstides sarnased, kuid selles artiklis on mõningaid erinevusi.

Süntaksi erinevused

Loendi ja dupleksi süntaks on veidi erinev. Nimekirjad on ümbritsetud nurksulgudega ()ja Tuples ümbritsetud sulgudega ().

Näide 1.1: loendi loomine vs Tuple loomine

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

Väljund:

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

Eespool määratlesime muutuja nimega list_num, mis sisaldab loendit numbritest 1kuni 4. Loend on ümbritsetud sulgudega (). Samuti määratlesime muutuja tup_num; mis sisaldab arvu numbreid 1kuni 4. Korrus on ümbritsetud sulgudega ().

Pythonis on meil type()funktsioon, mis annab loodud objekti tüübi.

Näide 1.2: funktsiooni type () abil leiate andmestruktuuri tüübi

 type(list_num) type(tup_num)

Väljund:

 nimekiri kahekordne

Muutuv loend vs muutumatud tuplid

Loendil on muutuv olemus, st loendit saab pärast selle loomist vastavalt vajadustele muuta või muuta, samas kui tupel on muutumatu olemus, st tuppi ei saa pärast selle loomist muuta ega muuta.

Näide 2.1: üksuste loendi muutmine vs Tuple

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

Väljund:

 (1,2,5,4) Traceback (viimane kõne viimati): fail "python", rida 6, objektis TypeError: 'tuple' ei toeta üksuse määramist

Ülalolevas koodis määrasime 5loendi_num indeksis 2ja leidsime väljundis 5indeksist 2. Samuti 5määrasime indeksi tup_num 2ja saime type error. Me ei saa dupletti muuta selle muutumatu olemuse tõttu.

Märkus. Kuna tupel on muutumatu, on need fikseeritud suurusega ja loendi suurus on erinev.

Saadaval olevad toimingud

Loenditel on rohkem sisseehitatud funktsioone kui kahekordsel. Saame kasutada dir((object))sisseehitatud funktsiooni kõigi seotud funktsioonide hankimiseks loendi ja duplikaadi jaoks.

Näide 3.1: Loendikataloog

 dir(list_num)

Väljund:

('__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__', 'lisa', 'lisa', lisa copy "," count "," laienda "," register ","sisesta ',' pop ',' eemalda ',' vastupidine ',' sorteeri ')

Näide 3.2: Tuple kataloog

 dir(tup_num)

Väljund:

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

Me näeme selgelt, et loendis on nii mitu lisafunktsionaalsust seotud. Võime sisestada ja hüpata, eemaldada ja sortida elemente loendis sisseehitatud funktsioonidega, mis pole Tuples saadaval.

Suuruse võrdlus

Kooslusoperatsioonide suurus on loendist väiksem, mis muudab selle natuke kiiremaks, kuid pole nii palju mainimist, kuni teil on tohutult palju elemente.

Näide 5.1: Arvutage loendi suurus võrreldes Tuplega

 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__())

Väljund:

 a = 104 b = 120

Ülalolevas koodis on meil samad üksused a ja nimekiri b, kuid dupleksi suurus on loendist väiksem.

Erinevad kasutusjuhtumid

Esmapilgul võib tunduda, et loendid võivad alati asendada tuplid. Kuid rühmad on äärmiselt kasulikud andmestruktuurid

  1. Tupli kasutamine loendi asemel võib anda programmeerijale ja tõlgile vihje, et andmeid ei tohiks muuta.
  2. Andmemahtu kasutatakse tavaliselt võtmeteta sõnastiku ekvivalendina. Näiteks,
     (("Mõõkkala", "Dominic Sena", 2001), ("Snowden", "Oliver Stone", 2016), ("Taksojuht", "Martin Scorsese", 1976))
    Ülaltoodud näide sisaldab loendeid, mis sisaldavad filmide loendit.
  3. Andmete lugemine on lihtsam, kui loendisse salvestatakse rühmitus. Näiteks,
     ((2,4), (5,7), (3,8), (5,9))
    on lihtsam lugeda kui
     ((2,4), (5,7), (3,8), (5,9))

Tuple'i saab kasutada ka sõnaraamatus võtmetähtsusega nende muutumatu ja muutumatu olemuse tõttu, samas kui loendeid ei kasutata sõnastikus võtmeta, kuna loendit ei saa käsitleda __hash__()ja see on muudetava iseloomuga.

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

Peamised punktid, mida meeles pidada:

  1. Korpuste sõnasõnaline süntaks on näidatud sulgudes (), loendite sõnasõnaline süntaks aga nurksulgudes ().
  2. Loenditel on muutuv pikkus, kahel on fikseeritud pikkus.
  3. Loendil on muutuv olemus, kahel on muutumatu olemus.
  4. Loendis on rohkem funktsioone kui kahes.

Huvitavad Artiklid...