Š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 1
iki 4
. Sąrašą supa skliausteliuose ()
. Be to, mes apibrėžėme kintamąjį tup_num; kuriame yra pora skaičių nuo 1
iki 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 5
esančiame kode mes priskyrėme „ list_num“ prie indekso, 2
o išvestyje radome 5
indeksą 2
. Be to, priskyrėme „ 5
tup_num“ prie indekso 2
ir 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
- Vietoje sąrašo naudojant „tuple“ programuotojui ir vertėjui gali būti užuomina, kad duomenys neturėtų būti keičiami.
- 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. - 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:
- Pažodinė raidžių sintaksė rodoma skliausteliuose,
()
o pažodinė sąrašų sintaksė rodoma laužtiniuose skliaustuose()
. - Sąrašai turi kintamą ilgį, dvigubi fiksuoto ilgio.
- Sąrašas turi nekintamą pobūdį, dvigubas - nekintamą pobūdį.
- Sąraše yra daugiau funkcionalumų nei „tuple“.