logo

Skirtumas tarp sąrašo ir tuple Python

Python sąrašai ir korteliai yra dvi Python duomenų struktūrų klasės. Sąrašo struktūra yra dinamiška ir lengvai keičiama, o kortelių struktūra yra statinė ir jos pakeisti negalima. Tai reiškia, kad eilutė paprastai yra greitesnė už sąrašą. Sąrašai žymimi laužtiniais skliaustais, o eilės – skliausteliuose.

„Python“ sąrašo ir „Tuple“ skirtumai

Sno

SĄRAŠAS



TUPLĖ

1 Sąrašai yra kintamas Kortelės yra nepakeičiami
2Iteracijų reikšmė yra daug laiko reikalaujantiIteracijų reikšmė yra palyginti greitesnė
3Sąrašas geriau tinka tokioms operacijoms kaip įterpimas ir trynimas.„Tuple“ duomenų tipas yra tinkamas norint pasiekti elementus
4Sąrašai sunaudoja daugiau atminties„Tuple“ sunaudoja mažiau atminties, palyginti su sąrašu
5Sąrašai turi keletą integruotų metodų„Tuple“ neturi daug integruotų metodų.
6Didesnė tikimybė, kad atsiras netikėtų pokyčių ir klaidųKadangi kortelės nesikeičia, jose daug mažiau klaidų.

Python sąrašas vs Python Tuple

Patikrinkite, ar kortelės yra nekintančios, o sąrašai – kintami

Čia mes palyginsime sąrašą ir kortelių keitimo 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)>

Išvestis
Original list [1, 2, 4, 4, 3, 3, 3, 6, 5] Example to show mutability [1, 2, 4, 77, 3, 3, 3, 6, 5]>

Mes galime pamatyti čia kortele modifikuoti negalima.

Python3
# code to test that tuples are immutable tuple1 = (0, 1, 2, 3) tuple1[0] = 4 print(tuple1)>

Išvestis:

mašinraščio datos tipas
Traceback (most recent call last):  File 'e0eaddff843a8695575daec34506f126.py', line 3, in  tuple1[0]=4 TypeError: 'tuple' object does not support item assignment>

Kuris yra geresnis Python sąrašas ar eilė?

Norėdami išbandyti šį atsakymą, atlikime kai kurias operacijas Python Tuple ir Python sąraše. Tai leis mums geriau suprasti, kuris yra geresnis Python sąrašas ar rinkinys.

Patikrinkite, ar „Tuples“ yra efektyvios atminties

Kadangi kortelės saugomos viename atminties bloke, joms nereikia papildomos vietos naujiems objektams, o sąrašai yra paskirstomi dviem blokais, pirmiausia fiksuotame su visais Python objekto informacija ir antrasis kintamo dydžio duomenų blokas.

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))>

Išvestis
96 80>

Patikrinkite, ar iteracijų reikšmė yra palyginti greitesnė „Tuples“.

Kadangi kortelės yra saugomos viename atminties bloke, joms nereikia papildomos vietos naujiems objektams, nes jos yra nekintančios, o sąrašai yra paskirstomi dviem blokais, pirmiausia fiksuotame su visais Python objekto informaciją ir kintamo dydžio bloką duomenims, todėl jie tampa dar greitesni.

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)>

Išvestis

Total lookup time for Tuple: 7038208700 Total lookup time for LIST: 19646516700>

Kintamasis sąrašas prieš nekintamus eilutes

Į Python , tiek sąrašai, tiek eilės palaiko daugybę operacijų, įskaitant indeksavimą, pjaustymą, sujungimą ir kt. Tačiau yra keletas skirtumų tarp operacijų, kurias galima atlikti su sąrašais ir eilėmis dėl jų kintamumo ir nekintamumo.

Python indeksavimas

Tiek sąrašai, tiek eilės leidžia pasiekti atskirus elementus naudojant jų indeksą, pradedant nuo 0.

Python3
my_list = [1, 2, 3] my_tuple = (4, 5, 6) print(my_list[0]) # Output: 1 print(my_tuple[1]) # Output: 5>

Išvestis
1 5>

Python pjaustymas

Tiek sąrašai, tiek eilutės leidžia išgauti elementų poaibį naudojant pjaustymą.

padaryti sh scenarijų vykdomąjį
Python3
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)>

Išvestis
[2, 3] (6, 7, 8)>

Python sujungimas

Tiek sąrašus, tiek eilutes galima sujungti naudojant + operatorių.

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)>

Išvestis
[1, 2, 3, 4, 5, 6] (7, 8, 9, 10, 11, 12)>

Pastaba - Tačiau yra keletas operacijų, kurios galimos tik sąrašams dėl jų kintamumo.

Python Pridėti

Sąrašai gali būti pridėti su naujais elementais naudojant append() metodą.

Python3
my_list = [1, 2, 3] my_list.append(4) print(my_list) # Output: [1, 2, 3, 4]>

Išvestis
[1, 2, 3, 4]>

Python Extend

Sąrašai taip pat gali būti papildyti kitu sąrašu, naudojant išplėsti() metodą.

kaip nustatyti monitoriaus dydį
Python3
list1 = [1, 2, 3] list2 = [4, 5, 6] list1.extend(list2) print(list1) # Output: [1, 2, 3, 4, 5, 6]>

Išvestis
[1, 2, 3, 4, 5, 6]>

Python Pašalinti

Sąrašai elementai gali būti pašalinti naudojant Remove() metodą.

Python3
my_list = [1, 2, 3, 4] my_list.remove(2) print(my_list) # Output: [1, 3, 4]>

Išvestis
[1, 3, 4]>

Kada naudoti „Tuples Over“ sąrašus?

Į Python , kortelės ir sąrašai naudojami duomenų rinkiniams saugoti, tačiau jie turi keletą svarbių skirtumų. Štai keletas situacijų, kai galbūt norėsite naudoti eilutes, o ne sąrašus –

Nekintami duomenys Kortelės yra nekintami, todėl juos sugeneravus jų turinio pakeisti negalima. Dėl to eilės yra tinkama parinktis informacijai, kuri neturėtų keistis, saugoti, pvz., sąrankos parametrus, pastovias reikšmes ar kitą informaciją, kuri turi likti tokia pati, kol programa veikia.

Spektaklis Kortelės yra lengvesni nei sąrašai ir gali būti greičiau generuojami, pasiekiami ir kartojami, nes yra nekintantys. Kortelės naudojimas gali būti efektyvesnis nei a sąrašą jei turite didžiulį duomenų rinkinį, kurį turite saugoti, gauti ir reguliariai naudoti, ir tų duomenų keisti nereikia.

Duomenų vientisumas – Užtikrinant, kad duomenų struktūra ir turinys išliktų nuoseklūs, duomenų vientisumui užtikrinti galima naudoti eilutes. Norėdami įsitikinti, kad skambinantis asmuo žino, kiek duomenų gali tikėtis, pavyzdžiui, jei yra funkcija grįžta nustatytą reikšmių kiekį, galbūt norėsite jas grąžinti kaip eilutę, o ne sąrašą.