Seznami in tuple v Pythonu sta dva razreda podatkovnih struktur Python. Struktura seznama je dinamična in se zlahka spremeni, medtem ko je struktura tuple statična in je ni mogoče spremeniti. To pomeni, da je tuple na splošno hitrejši od seznama. Seznami so označeni z oglatimi oklepaji, tuple pa z oklepaji.
Razlike med Listom in Tuple v Pythonu
Sno | SEZNAM | TUPLE |
|---|---|---|
| 1 | Seznami so spremenljiv | Tuples so nespremenljive |
| 2 | Posledica ponovitev je zamudna | Posledice ponovitev so sorazmerno hitrejše |
| 3 | Seznam je boljši za izvajanje operacij, kot sta vstavljanje in brisanje. | Podatkovni tip Tuple je primeren za dostop do elementov |
| 4 | Seznami porabijo več pomnilnika | Tuple porabi manj pomnilnika v primerjavi s seznamom |
| 5 | Seznami imajo več vgrajenih metod | Tuple nima veliko vgrajenih metod. |
| 6 | Večja je verjetnost, da bo prišlo do nepričakovanih sprememb in napak | Ker se tuple ne spreminjajo, so veliko manj nagnjene k napakam. |
Python List proti Python Tuple
Preizkusite, ali so tuple nespremenljive in seznami spremenljivi
Tukaj bomo primerjali teste spremenljivosti seznama in 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)> Izhod
Original list [1, 2, 4, 4, 3, 3, 3, 6, 5] Example to show mutability [1, 2, 4, 77, 3, 3, 3, 6, 5]>
Tukaj lahko vidimo tuple ni mogoče spremeniti.
Python3 # code to test that tuples are immutable tuple1 = (0, 1, 2, 3) tuple1[0] = 4 print(tuple1)>
Izhod:
t ff
Traceback (most recent call last): File 'e0eaddff843a8695575daec34506f126.py', line 3, in tuple1[0]=4 TypeError: 'tuple' object does not support item assignment>
Kateri je boljši seznam ali tuple v Pythonu?
Da preizkusimo ta odgovor, zaženimo nekaj operacij na Python Tuple in Python List. To nam bo dalo boljšo predstavo o tem, kateri je boljši seznam ali tuple v Pythonu.
Preizkusite, ali so Tuples pomnilniško učinkoviti
Ker so tuple shranjene v enem pomnilniškem bloku, zato ne potrebujejo dodatnega prostora za nove objekte, medtem ko so seznami dodeljeni v dveh blokih, prvem fiksnem z vsemi Python informacije o objektu in drugič blok spremenljive velikosti za podatke.
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))> Izhod
96 80>
Preizkusite, ali je implikacija iteracij sorazmerno hitrejša v Tuples
Ker so tuple shranjene v enem pomnilniškem bloku, zato ne potrebujejo dodatnega prostora za nove objekte, saj so nespremenljive, medtem ko so seznami dodeljeni v dveh blokih, prvem fiksnem z vsemi Python podatke o objektu in drugič blok spremenljive velikosti za podatke, zaradi česar so še hitrejši.
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)> Izhod
Total lookup time for Tuple: 7038208700 Total lookup time for LIST: 19646516700>
Spremenljivi seznam proti nespremenljivim tuplem
noter Python , tako seznami kot tuple podpirajo vrsto operacij, vključno z indeksiranjem, rezanjem, veriženjem in več. Vendar pa obstaja nekaj razlik med operacijami, ki so na voljo za sezname in tuple, zaradi njihove spremenljivosti oziroma nespremenljivosti.
Python indeksiranje
Tako seznami kot tuple vam omogočajo dostop do posameznih elementov z njihovim indeksom, začenši z 0.
Python3 my_list = [1, 2, 3] my_tuple = (4, 5, 6) print(my_list[0]) # Output: 1 print(my_tuple[1]) # Output: 5>
Izhod
1 5>
Rezanje v Pythonu
Tako seznami kot tuple vam omogočajo ekstrahiranje podnabora elementov z uporabo rezanja.
nespremenljiv seznamPython3
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)>
Izhod
[2, 3] (6, 7, 8)>
Python veriženje
Tako sezname kot tuple je mogoče povezati z operatorjem +.
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)>
Izhod
[1, 2, 3, 4, 5, 6] (7, 8, 9, 10, 11, 12)>
Opomba - Vendar pa obstajajo nekatere operacije, ki so zaradi njihove spremenljivosti na voljo samo za sezname.
Python Append
Seznamom je mogoče dodati nove elemente z uporabo metode append().
Python3 my_list = [1, 2, 3] my_list.append(4) print(my_list) # Output: [1, 2, 3, 4]>
Izhod
[1, 2, 3, 4]>
Python Extend
Sezname je mogoče razširiti tudi z drugim seznamom z uporabo metode extend().
vnos niza v javoPython3
list1 = [1, 2, 3] list2 = [4, 5, 6] list1.extend(list2) print(list1) # Output: [1, 2, 3, 4, 5, 6]>
Izhod
[1, 2, 3, 4, 5, 6]>
Odstrani Python
Seznami lahko odstrani elemente z uporabo metode remove().
Python3 my_list = [1, 2, 3, 4] my_list.remove(2) print(my_list) # Output: [1, 3, 4]>
Izhod
[1, 3, 4]>
Kdaj uporabiti torke namesto seznamov?
noter Python , tuple in seznami se uporabljajo za shranjevanje zbirk podatkov, vendar imajo nekaj pomembnih razlik. Tu je nekaj situacij, v katerih boste morda želeli uporabiti tuple namesto seznamov –
Nespremenljivi podatki – Tuples so nespremenljive, zato njihove vsebine, ko so ustvarjene, ni več mogoče spremeniti. Zaradi tega so tuple primerna možnost za shranjevanje informacij, ki se ne bi smele spreminjati, kot so nastavitve nastavitev, stalne vrednosti ali druge informacije, ki bi morale ostati enake, medtem ko se vaš program izvaja.
Izvedba – Tuples so lažji od seznamov in jih je morda hitreje ustvariti, dostopati do njih in ponavljati, saj so nespremenljivi. Uporaba tuple je lahko bolj učinkovita kot uporaba a seznam če imate ogromno zbirko podatkov, ki jih morate redno shranjevati, pridobivati in uporabljati in teh podatkov ni treba spreminjati.
Celovitost podatkov - Z zagotavljanjem, da struktura in vsebina podatkov ostaneta dosledni, je mogoče uporabiti tuple za zagotovitev celovitosti podatkov. Za zagotovitev, da se klicatelj zaveda, koliko podatkov lahko pričakuje, na primer, če je funkcija vrača nastavljeno količino vrednosti, jih boste morda želeli vrniti kot torko in ne kot seznam.