„Python“ sąrašas ir rinkiniai (su pavyzdžiais)

Šiame straipsnyje mes sužinosime pagrindinius sąrašo ir rinkinių skirtumus ir kaip naudoti šias dvi duomenų struktūras.

Sąrašai ir rinkiniai saugo vieną ar kelis objektus ar vertes tam tikra tvarka. Objektai, saugomi sąraše arba rinkinyje, gali būti bet kokio tipo, įskaitant nieko tipo, apibrėžtą raktiniu žodžiu Nėra.

Sąrašai ir rinkiniai daugumoje atvejų yra panašūs, tačiau šiame straipsnyje yra keletas skirtumų.

Sintaksės skirtumai

Sąrašo ir paketo sintaksė šiek tiek skiriasi. Sąrašai apjuosti skliaustuose, ()o „Tuples“ - skliausteliuose ().

1.1 pavyzdys: sąrašo kūrimas ir Tuple kūrimas

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

Išvestis:

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

Aukščiau mes apibrėžėme kintamąjį, vadinamą list_num, kuriame yra skaičių sąrašas nuo 1iki 4. Sąrašą supa skliausteliuose (). Be to, mes apibrėžėme kintamąjį tup_num; kuriame yra pora skaičių nuo 1iki 4. Korpusą supa skliausteliai ().

Pitone turime type()funkciją, kuri nurodo sukurto objekto tipą.

1.2 pavyzdys: raskite duomenų struktūros tipą naudodami funkciją type ()

 type(list_num) type(tup_num)

Išvestis:

 sąrašas tuple

Kintamas sąrašas ir nekintami rinkiniai

Sąrašas turi kintamą pobūdį, ty sąrašą galima pakeisti arba modifikuoti jį sukūrus pagal poreikius, o „tuple“ yra nekintamo pobūdžio, ty po jo sukūrimo jo negalima pakeisti ar modifikuoti.

2.1 pavyzdys: modifikuoti elementų sąrašą, palyginti su Tuple

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

Išvestis:

 (1,2,5,4) „Traceback“ (paskutinis paskutinis skambutis): failas „python“, 6 eilutė, „TypeError“ objekte: 'tuple' nepalaiko elemento priskyrimo

Aukščiau 5esančiame kode mes priskyrėme „ list_num“ prie indekso, 2o išvestyje radome 5indeksą 2. Be to, priskyrėme „ 5tup_num“ prie indekso 2ir gavome type error. Mes negalime modifikuoti kanalo dėl jo nekintamo pobūdžio.

Pastaba: Kadangi paketas yra nekintamas, jie yra fiksuoto dydžio, o sąrašas yra skirtingo dydžio.

Galimos operacijos

Sąrašai turi daugiau integruotų funkcijų nei „dupleksas“. Mes galime naudoti dir((object))integruotą funkciją, kad gautume visas susijusias sąrašo ir paketo funkcijas.

3.1 pavyzdys: Sąrašų katalogas

 dir(list_num)

Išvestis:

('__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__', 'pridėti', 'pridėti', kopija “,„ skaičius “,„ pratęsti “,„ rodyklė “,„įterpti "," pop "," pašalinti "," atvirkščiai "," rūšiuoti ")

3.2 pavyzdys: Tuple katalogas

 dir(tup_num)

Išvestis:

 ('__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__', '__reduce__', '__reduce__' , '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index')

Mes aiškiai matome, kad yra tiek daug papildomų funkcijų, susijusių su sąrašu per kelis. Mes galime atlikti įterpimo ir iškėlimo operacijas, pašalinti ir rūšiuoti elementus sąraše su įmontuotomis funkcijomis, kurių nėra „Tuple“.

Dydžių palyginimas

„Tples“ operacija yra mažesnė nei sąrašo, todėl ji yra šiek tiek greitesnė, bet apie tai neminima, kol neturite daugybės elementų.

5.1 pavyzdys: Apskaičiuokite sąrašo dydį, palyginti su 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__())

Išvestis:

 a = 104 b = 120

Aukščiau pateiktame kode mes turime a ir b sąrašą su tais pačiais elementais, tačiau jų skaičius yra mažesnis nei sąrašas.

Skirtingi naudojimo atvejai

Iš pirmo žvilgsnio gali atrodyti, kad sąrašai visada gali pakeisti rinkinius. Tačiau rinkiniai yra nepaprastai naudingos duomenų struktūros

  1. Vietoje sąrašo naudojant „tuple“ programuotojui ir vertėjui gali būti užuomina, kad duomenys neturėtų būti keičiami.
  2. Rinkiniai dažniausiai naudojami kaip žodyno atitikmuo be raktų duomenims laikyti. Pavyzdžiui,
     ((„Kardžuvė“, „Dominicas Sena“, 2001), („Snowdenas“, „Oliveris Stone“, 2016 m.), („Taksi vairuotojas“, „Martinas Scorsese“, 1976))
    Aukščiau pateiktame pavyzdyje yra sąrašo, kuriame yra filmų sąrašas, rinkiniai.
  3. Duomenis skaityti paprasčiau, kai rinkiniai saugomi sąraše. Pavyzdžiui,
     ((2,4), (5,7), (3,8), (5,9))
    yra lengviau skaityti nei
     ((2,4), (5,7), (3,8), (5,9))

Tuple taip pat gali būti naudojamas kaip raktas į žodyną, nes jų sąrašas yra nekintamas ir nekintamas, o sąrašai nenaudojami kaip raktiniai žodynuose, nes sąrašas negali būti tvarkomas __hash__()ir turi kintamą pobūdį.

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

Pagrindiniai dalykai, kuriuos reikia atsiminti:

  1. Pažodinė raidžių sintaksė rodoma skliausteliuose, ()o pažodinė sąrašų sintaksė rodoma laužtiniuose skliaustuose ().
  2. Sąrašai turi kintamą ilgį, dvigubi fiksuoto ilgio.
  3. Sąrašas turi nekintamą pobūdį, dvigubas - nekintamą pobūdį.
  4. Sąraše yra daugiau funkcionalumų nei „tuple“.

Įdomios straipsniai...