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 |
| 2 | Iteracijų reikšmė yra daug laiko reikalaujanti | Iteracijų reikšmė yra palyginti greitesnė |
| 3 | Sąrašas geriau tinka tokioms operacijoms kaip įterpimas ir trynimas. | „Tuple“ duomenų tipas yra tinkamas norint pasiekti elementus |
| 4 | Sąrašai sunaudoja daugiau atminties | „Tuple“ sunaudoja mažiau atminties, palyginti su sąrašu |
| 5 | Sąrašai turi keletą integruotų metodų | „Tuple“ neturi daug integruotų metodų. |
| 6 | Didesnė 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šą.