Zoznamy a n-tice v Pythone sú dve triedy dátových štruktúr Pythonu. Štruktúra zoznamu je dynamická a ľahko sa mení, zatiaľ čo štruktúra n-tice je statická a nemožno ju zmeniť. To znamená, že n-tica je vo všeobecnosti rýchlejšia ako zoznam. Zoznamy sú označené hranatými zátvorkami a n-tice sú označené zátvorkami.
Rozdiely medzi Listom a Tuple v Pythone
Sno | ZOZNAM | NÁSOBNÝ |
|---|---|---|
| 1 | zoznamy sú premenlivé | Tuples sú nemenné |
| 2 | Dôsledok iterácií je časovo náročný | Implikácia iterácií je pomerne rýchlejšia |
| 3 | Zoznam je vhodnejší na vykonávanie operácií, ako je vkladanie a odstraňovanie. | Dátový typ Tuple je vhodný na prístup k prvkom |
| 4 | Zoznamy zaberajú viac pamäte | Tuple spotrebuje menej pamäte v porovnaní so zoznamom |
| 5 | Zoznamy majú niekoľko vstavaných metód | Tuple nemá veľa vstavaných metód. |
| 6 | S väčšou pravdepodobnosťou sa vyskytnú neočakávané zmeny a chyby | Keďže n-tice sa nemenia, sú oveľa menej náchylné na chyby. |
Zoznam Python vs Python Tuple
Otestujte, či sú n-tice nemenné a či zoznamy sú meniteľné
Tu porovnáme zoznam a testy mutability tuple.
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)> Výkon
Original list [1, 2, 4, 4, 3, 3, 3, 6, 5] Example to show mutability [1, 2, 4, 77, 3, 3, 3, 6, 5]>
Tu môžeme vidieť násobný nie je možné upraviť.
Python3 # code to test that tuples are immutable tuple1 = (0, 1, 2, 3) tuple1[0] = 4 print(tuple1)>
Výkon:
reštartujte mysql ubuntu
Traceback (most recent call last): File 'e0eaddff843a8695575daec34506f126.py', line 3, in tuple1[0]=4 TypeError: 'tuple' object does not support item assignment>
Ktorý je lepší zoznam alebo n-tica v Pythone?
Ak chcete túto odpoveď otestovať, spustite niekoľko operácií na Python Tuple a Python List. To nám dá lepšiu predstavu o tom, ktorý zoznam alebo n-tica je v Pythone lepší.
Otestujte, či sú n-tice pamäťovo efektívne
Keďže n-tice sú uložené v jedinom pamäťovom bloku, nevyžadujú extra priestor pre nové objekty, zatiaľ čo zoznamy sú alokované do dvoch blokov, najprv do pevného so všetkými Python informácie o objekte a druhý blok s premenlivou veľkosťou pre dáta.
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))> Výkon
96 80>
Otestujte, či je implikácia iterácií porovnateľne rýchlejšia v Tuples
Keďže n-tice sú uložené v jedinom pamäťovom bloku, nevyžadujú extra priestor pre nové objekty, pretože sú nemenné, zatiaľ čo zoznamy sú alokované do dvoch blokov, najprv do pevného so všetkými Python informácie o objekte a druhý blok s premenlivou veľkosťou pre dáta, vďaka čomu sú ešte rýchlejšie.
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)> Výkon
Total lookup time for Tuple: 7038208700 Total lookup time for LIST: 19646516700>
Menný zoznam vs. Immutable N-tice
In Python , zoznamy aj n-tice podporujú celý rad operácií vrátane indexovania, rezania, zreťazenia a ďalších. Existujú však určité rozdiely medzi operáciami, ktoré sú k dispozícii pre zoznamy a n-tice, kvôli ich premenlivosti a nemennosti.
Indexovanie Pythonu
Zoznamy aj n-tice vám umožňujú pristupovať k jednotlivým prvkom pomocou ich indexu od 0.
Python3 my_list = [1, 2, 3] my_tuple = (4, 5, 6) print(my_list[0]) # Output: 1 print(my_tuple[1]) # Output: 5>
Výkon
1 5>
Python Slicing
Zoznamy aj n-tice vám umožňujú extrahovať podmnožinu prvkov pomocou krájania.
ako získať hru holub na androidPython3
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)>
Výkon
[2, 3] (6, 7, 8)>
Zreťazenie Pythonu
Zoznamy aj n-tice je možné spojiť pomocou operátora +.
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)>
Výkon
[1, 2, 3, 4, 5, 6] (7, 8, 9, 10, 11, 12)>
Poznámka - Existujú však niektoré operácie, ktoré sú dostupné len pre zoznamy z dôvodu ich premenlivosti.
Príloha Python
K zoznamom možno pridať nové prvky pomocou metódy append().
Python3 my_list = [1, 2, 3] my_list.append(4) print(my_list) # Output: [1, 2, 3, 4]>
Výkon
[1, 2, 3, 4]>
Python Extend
Zoznamy možno tiež rozšíriť o ďalší zoznam pomocou metódy extend().
java reťazec na booleovskú hodnotuPython3
list1 = [1, 2, 3] list2 = [4, 5, 6] list1.extend(list2) print(list1) # Output: [1, 2, 3, 4, 5, 6]>
Výkon
[1, 2, 3, 4, 5, 6]>
Odstrániť Python
zoznamy môže mať prvky odstránené pomocou metódy remove().
Python3 my_list = [1, 2, 3, 4] my_list.remove(2) print(my_list) # Output: [1, 3, 4]>
Výkon
[1, 3, 4]>
Kedy použiť n-tice nad zoznamami?
In Python , n-tice a zoznamy sa používajú na ukladanie kolekcií údajov, ale majú niektoré dôležité rozdiely. Tu je niekoľko situácií, v ktorých možno budete chcieť použiť n-tice namiesto zoznamov –
Nemenné údaje – Tuples sú nemenné, takže po vygenerovaní ich obsah nemožno zmeniť. Vďaka tomu sú n-tice vhodnou možnosťou na ukladanie informácií, ktoré by sa nemali meniť, ako sú nastavenia nastavenia, konštantné hodnoty alebo iné informácie, ktoré by mali zostať rovnaké, kým je váš program spustený.
Výkon – Tuples sú ľahšie ako zoznamy a možno ich rýchlejšie generovať, pristupovať a opakovať, pretože sú nemenné. Použitie n-tice môže byť efektívnejšie ako použitie a zoznam ak máte obrovskú zbierku údajov, ktoré potrebujete pravidelne uchovávať, získavať a používať a tieto údaje nie je potrebné meniť.
Integrita údajov - Zabezpečením toho, aby štruktúra a obsah údajov zostali konzistentné, možno na zabezpečenie integrity údajov použiť n-tice. Aby ste sa uistili, že volajúci vie, koľko údajov môže očakávať, napríklad v prípade funkcie sa vracia nastavené množstvo hodnôt, možno ich budete chcieť vrátiť ako n-ticu a nie ako zoznam.