Python saraksts pret tirāļiem (ar piemēriem)

Šajā rakstā mēs uzzināsim galvenās atšķirības starp sarakstu un kopām un to, kā izmantot šīs divas datu struktūras.

Sarakstos un rindkopās viens vai vairāki objekti vai vērtības tiek glabāti noteiktā secībā. Sarakstā vai kopā saglabātie objekti var būt jebkura veida, ieskaitot neko tipu, ko definējis atslēgvārds None.

Saraksti un komplekti lielākajā daļā gadījumu ir līdzīgi, taču šajā rakstā ir dažas atšķirības.

Sintakses atšķirības

Saraksta un kopas sintakse ir nedaudz atšķirīga. Sarakstus ieskauj kvadrātiekavas, ()bet Tuples - iekavas ().

1.1. Piemērs: saraksta izveide pret Tuple izveidošanu

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

Izeja:

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

Iepriekš mēs definējām mainīgo ar nosaukumu list_num, kurā ir skaitļu saraksts no 1līdz 4. Sarakstu ieskauj iekavas (). Mēs arī definējām mainīgo tup_num; kurā ir skaitļu kopa no 1līdz 4. Divstāvu ieskauj iekavas ().

Pitonā mums ir type()funkcija, kas dod izveidotā objekta tipu.

1.2. Piemērs: Atrodiet datu struktūras veidu, izmantojot type () funkciju

 type(list_num) type(tup_num)

Izeja:

 saraksts dubultā

Mainīgais saraksts pret nemainīgajiem skaitļiem

Sarakstam ir mainīgs raksturs, ti, sarakstu var mainīt vai modificēt pēc tā izveides atbilstoši vajadzībām, turpretim korpuss ir nemainīgs, ti, kopu pēc tā izveides nevar mainīt vai modificēt.

2.1. Piemērs: Vienumu saraksta mainīšana pret Tuple

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

Izeja:

 (1,2,5,4) Traceback (pēdējais zvans pēdējais): Fails "python", 6. rinda, objektā TypeError: 'tuple' neatbalsta vienuma piešķiršanu

Iepriekš minētajā kodā mēs 5indeksam piešķirām list_num, 2un izvadē atradām 5indeksu 2. Arī mēs 5piešķirām tup_num indeksā, 2un mēs saņēmām type error. Mēs nevaram modificēt dubultu tā nemainīgā rakstura dēļ.

Piezīme: Tā kā korpuss ir nemainīgs, tie ir fiksēti pēc izmēra, un saraksts ir mainīgs.

Pieejamās darbības

Sarakstiem ir vairāk iebūvētu funkciju nekā dubultā. Mēs varam izmantot dir((object))iebūvēto funkciju, lai iegūtu visas saistītās funkcijas sarakstam un kopai.

3.1. Piemērs: Sarakstu katalogs

 dir(list_num)

Izeja:

('__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__', 'pievienot', 'pievienot', pievienot kopēt ',' skaits ',' pagarināt ',' rādītājs ','ievietot ',' pop ',' noņemt ',' reverse ',' kārtot ')

3.2. Piemērs: Tuple katalogs

 dir(tup_num)

Izeja:

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

Mēs skaidri redzam, ka ir tik daudz papildu funkciju, kas saistītas ar sarakstu pāri kopai. Mēs varam veikt ievietošanas un atvēršanas darbību, noņemot un kārtojot elementus sarakstā ar iebūvētām funkcijām, kas nav pieejamas Tuple.

Izmēru salīdzinājums

Vilcienu operācijai ir mazāks izmērs nekā sarakstam, kas padara to mazliet ātrāku, bet par to nav daudz jāpiemin, līdz jums ir milzīgs elementu skaits.

5.1. Piemērs: Aprēķiniet saraksta lielumu pret 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__())

Izeja:

 a = 104 b = 120

Iepriekš minētajā kodā mums ir tupelis a un saraksts b ar vieniem un tiem pašiem priekšmetiem, bet kopas lielums ir mazāks par sarakstu.

Dažādi lietošanas gadījumi

No pirmā acu uzmetiena var šķist, ka saraksti vienmēr var aizstāt vienumus. Bet kopas ir ārkārtīgi noderīgas datu struktūras

  1. Saraksta vietā lietojot dubultu, programmētājs un tulks var dot mājienu, ka datus nevajadzētu mainīt.
  2. Grupas parasti tiek izmantotas kā vārdnīcas ekvivalents bez taustiņiem datu glabāšanai. Piemēram,
     (("Zobenzivs", "Dominiks Sena", 2001), ("Snoudens", "Olivers Stouns", 2016), ("Taksometra vadītājs", "Martins Skorsēze", 1976))
    Iepriekš minētajā piemērā ir iekļauti saraksti sarakstā, kurā ir filmu saraksts.
  3. Datu lasīšana ir vienkāršāka, ja rindkopas tiek glabātas sarakstā. Piemēram,
     ((2,4), (5,7), (3,8), (5,9))
    ir vieglāk lasāms nekā
     ((2,4), (5,7), (3,8), (5,9))

Tuple var tikt izmantots arī kā atslēgvārds vārdnīcā, ņemot vērā to mainīgo un nemainīgo raksturu, turpretī saraksti vārdnīcā netiek izmantoti kā atslēgas, jo sarakstu nevar apstrādāt __hash__()un tam ir maināms raksturs.

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

Galvenie jautājumi, kas jāatceras:

  1. Burtu burtu sintakse tiek parādīta iekavās, ()bet saraksta burtiskā sintakse - kvadrātiekavās ().
  2. Sarakstiem ir mainīgs garums, dubultam ir noteikts garums.
  3. Sarakstam ir mainīgs raksturs, dubultam ir nemainīgs raksturs.
  4. Sarakstam ir lielāka funkcionalitāte nekā dubultam.

Interesanti raksti...