Saraksti un Korpusi Python ir divas Python datu struktūru klases. Saraksta struktūra ir dinamiska un viegli maināma, turpretim korešu struktūra ir statiska un to nevar mainīt. Tas nozīmē, ka kortežs parasti ir ātrāks par sarakstu. Saraksti tiek apzīmēti ar kvadrātiekavām, bet korteži ir apzīmēti ar iekavām.
Atšķirības starp sarakstu un Tuple Python
Sno | SARAKSTS | TUPLE |
|---|---|---|
| 1 | Saraksti ir mainīgs | Korpusi ir nemainīgi |
| 2 | Iterāciju ietekme ir laikietilpīga | Iterāciju ietekme ir salīdzinoši ātrāka |
| 3 | Saraksts ir labāks tādu darbību veikšanai kā ievietošana un dzēšana. | Datu tips Tuple ir piemērots, lai piekļūtu elementiem |
| 4 | Saraksti patērē vairāk atmiņas | Tuple patērē mazāk atmiņas, salīdzinot ar sarakstu |
| 5 | Sarakstos ir vairākas iebūvētas metodes | Tuple nav daudz iebūvētu metožu. |
| 6 | Negaidītu izmaiņu un kļūdu iespējamība ir lielāka | Tā kā korteži nemainās, tajās ir daudz mazāk kļūdu. |
Python saraksts pret Python Tuple
Pārbaudiet, vai korteži ir nemainīgi un saraksti ir mainīgi
Šeit mēs salīdzināsim sarakstu un korekcijas mainīguma testus.
Python3 # Creating a List with # the use of Numbers # code to test that tuples are mutable List = [1, 2, 4, 4, 3, 3, 3, 6, 5] print('Original list ', List) List[3] = 77 print('Example to show mutability ', List)> Izvade
Original list [1, 2, 4, 4, 3, 3, 3, 6, 5] Example to show mutability [1, 2, 4, 77, 3, 3, 3, 6, 5]>
Mēs varam redzēt šeit korts nevar modificēt.
Python3 # code to test that tuples are immutable tuple1 = (0, 1, 2, 3) tuple1[0] = 4 print(tuple1)>
Izvade:
Internetbankas trūkumi
Traceback (most recent call last): File 'e0eaddff843a8695575daec34506f126.py', line 3, in tuple1[0]=4 TypeError: 'tuple' object does not support item assignment>
Kurš Python saraksts ir labāks?
Lai pārbaudītu šo atbildi, izpildīsim dažas darbības ar Python Tuple un Python sarakstu. Tas sniegs mums labāku priekšstatu par to, kurš ir labāks Python saraksts vai kortežs.
Pārbaudiet, vai Tuples ir efektīvas atmiņas efektivitāte
Tā kā korteži tiek glabāti vienā atmiņas blokā, tiem nav nepieciešama papildu vieta jauniem objektiem, turpretim saraksti tiek sadalīti divos blokos, vispirms fiksētajā ar visiem Python objekta informāciju un otrkārt mainīga izmēra bloku datiem.
Python3 import sys a_list = [] a_tuple = () a_list = ['Geeks', 'For', 'Geeks'] a_tuple = ('Geeks', 'For', 'Geeks') print(sys.getsizeof(a_list)) print(sys.getsizeof(a_tuple))> Izvade
96 80>
Pārbaudiet, vai iterāciju ietekme ir salīdzinoši ātrāka programmā Tuples
Tā kā korteži tiek glabāti vienā atmiņas blokā, tiem nav nepieciešama papildu vieta jauniem objektiem, jo tie ir nemainīgi, turpretim saraksti tiek sadalīti divos blokos, vispirms fiksētajā ar visiem Python objekta informāciju un, otrkārt, mainīga izmēra bloku datiem, kas padara tos vēl ātrākus.
Python3 # code import sys, platform import time l=list(range(100000001)) t=tuple(range(100000001)) start = time.time_ns() for i in range(len(t)): a = t[i] end = time.time_ns() print('Total lookup time for Tuple: ', end - start) start = time.time_ns() for i in range(len(l)): a = l[i] end = time.time_ns() print('Total lookup time for LIST: ', end - start)> Izvade
Total lookup time for Tuple: 7038208700 Total lookup time for LIST: 19646516700>
Mainīgs saraksts pret nemaināmiem korektoriem
In Python , gan saraksti, gan korteži atbalsta virkni darbību, tostarp indeksēšanu, sadalīšanu, savienošanu un daudz ko citu. Tomēr ir dažas atšķirības starp operācijām, kas ir pieejamas sarakstiem un kortežiem, ņemot vērā to mainīgumu un nemainīgumu.
Python indeksēšana
Gan saraksti, gan korteži ļauj piekļūt atsevišķiem elementiem, izmantojot to indeksu, sākot no 0.
Python3 my_list = [1, 2, 3] my_tuple = (4, 5, 6) print(my_list[0]) # Output: 1 print(my_tuple[1]) # Output: 5>
Izvade
1 5>
Python sagriešana
Gan saraksti, gan korteži ļauj iegūt elementu apakškopu, izmantojot sagriešanu.
pilna forma pvrPython3
my_list = [1, 2, 3, 4, 5] my_tuple = (6, 7, 8, 9, 10) print(my_list[1:3]) # Output: [2, 3] print(my_tuple[:3]) # Output: (6, 7, 8)>
Izvade
[2, 3] (6, 7, 8)>
Python savienošana
Gan sarakstus, gan korešus var savienot, izmantojot operatoru +.
Python3 list1 = [1, 2, 3] list2 = [4, 5, 6] tuple1 = (7, 8, 9) tuple2 = (10, 11, 12) print(list1 + list2) # Output: [1, 2, 3, 4, 5, 6] print(tuple1 + tuple2) # Output: (7, 8, 9, 10, 11, 12)>
Izvade
[1, 2, 3, 4, 5, 6] (7, 8, 9, 10, 11, 12)>
Piezīme - Tomēr ir dažas darbības, kas ir pieejamas tikai sarakstiem to mainīguma dēļ.
Python pievienot
Sarakstus var pievienot ar jauniem elementiem, izmantojot append() metodi.
Python3 my_list = [1, 2, 3] my_list.append(4) print(my_list) # Output: [1, 2, 3, 4]>
Izvade
[1, 2, 3, 4]>
Python Extend
Sarakstus var arī paplašināt ar citu sarakstu, izmantojot paplašināt() metodi.
uzdevumu pārvaldnieks operētājsistēmai LinuxPython3
list1 = [1, 2, 3] list2 = [4, 5, 6] list1.extend(list2) print(list1) # Output: [1, 2, 3, 4, 5, 6]>
Izvade
[1, 2, 3, 4, 5, 6]>
Python noņemšana
Saraksti elementi var tikt noņemti, izmantojot metodi remove().
Python3 my_list = [1, 2, 3, 4] my_list.remove(2) print(my_list) # Output: [1, 3, 4]>
Izvade
[1, 3, 4]>
Kad lietot Tuples Over sarakstus?
In Python , gan korteži, gan saraksti tiek izmantoti datu kolekciju glabāšanai, taču tiem ir dažas būtiskas atšķirības. Tālāk ir norādītas dažas situācijas, kurās sarakstu vietā varētu vēlēties izmantot virknes.
Nemainīgi dati – Korpusi ir nemainīgi, tāpēc pēc to ģenerēšanas to saturu nevar mainīt. Tādējādi korteži ir piemērota opcija tādas informācijas glabāšanai, kurai nevajadzētu mainīties, piemēram, iestatīšanas iestatījumus, nemainīgas vērtības vai citu informāciju, kurai programmas darbības laikā ir jāpaliek nemainīgai.
Performance – Korpusi ir vieglāki nekā saraksti, un tos var ātrāk ģenerēt, piekļūt un atkārtot, jo tie ir nemainīgi. Korejas izmantošana var būt efektīvāka nekā a sarakstu ja jums ir milzīga datu kolekcija, kas jums regulāri jāsaglabā, jāizgūst un jāizmanto un šie dati nav jāmaina.
Datu ticamība - Nodrošinot datu struktūras un satura konsekvenci, datu integritātes nodrošināšanai var izmantot kopas. Lai pārliecinātos, ka zvanītājs zina, cik daudz datu ir sagaidāms, piemēram, ja funkcija atgriežas noteiktu vērtību daudzumu, iespējams, vēlēsities tās atgriezt kā korteži, nevis sarakstu.