Structuri de date în Python – Ghid complet

Publicat: 2021-06-14

Cuprins

Ce este structura datelor?

Structura datelor se referă la stocarea computațională a datelor pentru o utilizare eficientă. Stochează datele într-un mod care poate fi ușor modificat și accesat. Se referă în mod colectiv la valorile datelor, relația dintre acestea și operațiunile care pot fi efectuate asupra datelor. Importanța structurii datelor constă în aplicarea acesteia pentru dezvoltarea programelor de calculator. Deoarece programele de calculator se bazează în mare măsură pe date, aranjarea adecvată a datelor pentru un acces ușor este de o importanță primordială pentru orice program sau software.

Cele patru funcții principale ale unei structuri de date sunt

  • Pentru a introduce informații
  • Pentru a procesa informația
  • Pentru a menține informația
  • Pentru a prelua informațiile

Tipuri de structuri de date în Python

Mai multe structuri de date sunt suportate de Python pentru acces ușor și stocare a datelor. Tipurile de structuri de date Python pot fi clasificate ca tipuri de date primitive și non-primitive. Primele tipuri de date includ Integers, Float, Strings și Boolean, în timp ce ultimul este tabloul, lista, tuplurile, dicționarele, seturile și fișierele. Prin urmare, structurile de date din python sunt atât structuri de date încorporate, cât și structuri de date definite de utilizator. Structura de date încorporată este denumită structură de date non-primitivă.

Structuri de date încorporate

Python are mai multe structuri de date care acționează ca containere pentru stocarea altor date. Aceste structuri de date Python sunt Listă, Dicționare, Tuple și Seturi.

Structuri de date definite de utilizator

Aceste structuri de date pot fi programate cu aceeași funcție ca cea a structurilor de date încorporate în python . Structurile de date definite de utilizator sunt: ​​Lista legată, Stiva, Coadă, Arbore, Grafic și Hartă hash.

Lista structurilor de date integrate și explicația

1. Lista

Datele stocate într-o listă sunt aranjate secvenţial şi de diferite tipuri de date. Pentru fiecare dată, este atribuită o adresă și este cunoscută sub numele de index. Valoarea indexului începe cu 0 și continuă până la ultimul element. Acesta se numește indice pozitiv. Un index negativ există și dacă elementele sunt accesate invers. Aceasta se numește indexare negativă.

Crearea listei

Lista este creată ca paranteze drepte. Elementele pot fi apoi adăugate în consecință. Poate fi adăugat între paranteze drepte pentru a crea o listă. Dacă nu sunt adăugate elemente, va fi creată o listă goală. În caz contrar, vor fi create elementele din listă.

Intrare

lista_mea = [] #creează o listă goală

print(lista_mea)

lista_mea = [1, 2, 3, „exemplu”, 3.132] #crearea listei cu date

print(lista_mea)

Ieșire

[]

[1, 2, 3, „exemplu”, 3.132]

Adăugarea de elemente într-o listă

Trei funcții sunt utilizate pentru adăugarea elementelor dintr-o listă. Aceste funcții sunt append(), extend() și insert().

  • Toate elementele sunt adăugate ca un singur element folosind funcția append().
  • Pentru adăugarea elementelor unul câte unul în listă, se folosește funcția extend().
  • Pentru adăugarea elementelor după valoarea lor de index, este utilizată funcția insert().
Intrare

lista_mea = [1, 2, 3]

print(lista_mea)

my_list.append([555, 12]) #adăugați ca un singur element

print(lista_mea)

my_list.extend([234, 'mai_exemplu']) #adăugați ca elemente diferite

print(lista_mea)

my_list.insert(1, 'insert_example') #adăugați elementul i

print(lista_mea)

Ieșire:

[1, 2, 3]

[1, 2, 3, [555, 12]]

[1, 2, 3, [555, 12], 234, „mai multe_exemplu”]

[1, „inserați_exemplu”, 2, 3, [555, 12], 234, „mai multe_exemplu”]

Ștergerea elementelor dintr-o listă

Un cuvânt cheie încorporat „del” în python este folosit pentru a șterge un element din listă. Cu toate acestea, această funcție nu returnează elementul șters.

  • Pentru returnarea unui element șters este folosită funcția pop(). Utilizează valoarea index a elementului de șters.
  • Funcția remove() este folosită pentru a șterge un element după valoarea sa.

Ieșire:

[1, 2, 3, „exemplu”, 3.132, 30]

[1, 2, 3, 3.132, 30]

Element afișat: 2 Lista rămasă: [1, 3, 3.132, 30]

[]

Evaluarea elementelor dintr-o listă

  • Evaluarea elementului dintr-o listă este simplă. Imprimarea listei va afișa direct elementele.
  • Elementele specifice pot fi evaluate prin transmiterea valorii indicelui.

Ieșire:

1

2

3

exemplu

3.132

10

30

[1, 2, 3, „exemplu”, 3.132, 10, 30]

Exemplu

[1, 2]

[30, 10, 3.132, „exemplu”, 3, 2, 1]

Pe lângă operațiunile menționate mai sus, în Python sunt disponibile câteva alte funcții încorporate pentru a lucra cu liste.

  • len(): funcția este folosită pentru a returna lungimea listei.
  • index(): această funcție permite utilizatorului să cunoască valoarea indexului unei valori transmise.
  • Funcția count() este utilizată pentru a găsi numărul valorii transmise acesteia.
  • sort() sortează valoarea dintr-o listă și modifică lista.
  • sorted() sortează valoarea într-o listă și returnează lista.

Ieșire

6

3

2

[1, 2, 3, 10, 10, 30]

[30, 10, 10, 3, 2, 1]

2. Dicţionar

Dicționarul este un tip de structură de date în care perechile cheie-valoare sunt stocate mai degrabă decât elementele individuale. Poate fi explicat cu exemplul unui director de telefon care conține toate numerele de persoane împreună cu numerele lor de telefon. Numele și numărul de telefon aici definesc valorile constante care sunt „cheia” și numerele și numele tuturor persoanelor ca valori pentru acea cheie. Evaluarea unei chei va oferi acces la toate valorile stocate în acea cheie. Această structură cheie-valoare definită pe Python este cunoscută ca dicționar.

Crearea unui dicționar

  • Acoladele cu flori inactiv, funcția dict() poate fi folosită pentru crearea unui dicționar.
  • Perechile cheie-valoare trebuie adăugate în timpul creării unui dicționar.

Modificare în perechi cheie-valoare

Orice modificare în dicționar se poate face numai prin cheie. Prin urmare, cheile trebuie accesate mai întâi și apoi trebuie efectuate modificările.

Intrare

my_dict = {'First': 'Python', 'Second': 'Java'} print(my_dict) my_dict['Second'] = 'C++' #changing element print(my_dict) my_dict['Third'] = 'Ruby' #adăugarea perechii cheie-valoare print(my_dict)

Ieșire:
{„Primul”: „Python”, „Al doilea”: „Java”}
{'First': 'Python', 'Second': 'C++'}
{'First': 'Python', 'Second': 'C++', 'Third': 'Ruby'}


Ștergerea unui dicționar
O funcție clear () este utilizată pentru a șterge întregul dicționar. Dicționarul poate fi evaluat prin taste folosind funcția get() sau transmițând valorile cheilor.

Intrare

dict = {'Lună': 'Ianuarie', 'Sezon': 'iarnă'}

print(dict['Primul'])

print(dict.get('Al doilea')

Ieșire

ianuarie

Iarnă

Alte funcții asociate cu un dicționar sunt keys(), values() și items().

3. Tuplu

Similar cu lista, tuplurile sunt liste de stocare a datelor, dar singura diferență este că datele stocate într-un tuplu nu pot fi modificate. Dacă datele dintr-un tuplu sunt modificabile, numai atunci este posibilă modificarea datelor.

  • Tuplurile pot fi create prin funcția tuple().

Intrare

nou_tuplu = (10, 20, 30, 40)

print(new_tuple)

Ieșire

(10, 20, 30, 40)

  • Elementele dintr-un tuplu pot fi evaluate în același mod ca și evaluarea elementelor dintr-o listă.

Intrare

new_tuple2 = (10, 20, 30, „vârstă”)

pentru x în new_tuple2:

print(x)

print(new_tuple2)

print(new_tuple2[0])

Ieșire

10

20

30

Vârstă

(10, 20, 30, „vârsta”)

10

  • Operatorul „+” este folosit pentru a adăuga un alt tuplu

Intrare

tuplu = (1, 2, 3)

tuplu = tuplu + (4, 5, 6

print(tuplu)

Ieșire

(1, 2, 3, 4, 5, 6)

4. Setați

Structura datelor setului este similară cu seturile aritmetice. Este practic o colecție de elemente unice. Dacă datele continuă să se repete, atunci seturile iau în considerare adăugarea acelui element o singură dată.

  • Un set poate fi creat doar prin transmiterea valorilor acestuia în acolade cu flori.

Intrare

set = {10, 20, 30, 40, 40, 40}

print(set)

Ieșire

{10, 20, 30, 40}

  • Funcția add() poate fi folosită pentru a adăuga elemente la un set.
  • Pentru a combina date din două seturi, poate fi utilizată funcția union().
  • Pentru a identifica datele care sunt prezente în ambele seturi, se folosește funcția intersection().
  • Funcția difference() scoate numai datele care sunt unice pentru setul, eliminând datele comune.
  • Funcția symmetric_difference() scoate datele unice pentru ambele seturi.

Lista structurilor de date definite de utilizator și explicații

1. Stive

O stivă este o structură liniară care este fie o structură Last in First Out (LIFO), fie o structură First in Last Out (FIFO). Există două operațiuni principale în stivă, adică push și pop. Push înseamnă adăugarea unui element în partea de sus a listei, în timp ce pop înseamnă eliminarea unui element din partea de jos a stivei. Procesul este bine descris în figura 1.

Utilitatea stivei

  • Elementele anterioare pot fi evaluate prin trasare înapoi.
  • Potrivirea elementelor recursive.

Sursă

Figura 1: Reprezentarea grafică a stivei

Exemplu

Ieșire

['primul, al doilea, al treilea']

['primul al doilea al treilea al patrulea al cincilea']

a cincea

['primul al doilea al treilea al patrulea']

2. Coadă

Similar cu stivele, o coadă este o structură liniară care permite inserarea unui element la un capăt și ștergerea de la celălalt capăt. Cele două operații sunt cunoscute sub denumirea de adăpostire și scoatere la coadă. Elementul adăugat recent este eliminat mai întâi ca stivele. O reprezentare grafică a cozii este prezentată în Figura 2. Una dintre principalele utilizări ale unei cozi este pentru procesarea lucrurilor de îndată ce acestea intră.

Sursă

Figura 2 : Reprezentarea grafică a cozilor

Exemplu

Ieșire

['primul, al doilea, al treilea']

['primul al doilea al treilea al patrulea al cincilea']

primul

a cincea

[„al doilea”, „al treilea”, „al patrulea”, „al cincilea”]

3. Arborele

Arborii sunt structuri de date neliniare și ierarhice constând din noduri legate prin margini. Structura de date a arborelui python are un nod rădăcină, un nod părinte și un nod copil. Rădăcina este elementul superior al unei structuri de date. Un arbore binar este o structură în care elementele nu au mai mult de două noduri copil.

Utilitatea unui copac

  • Afișează relațiile structurale ale elementelor de date.
  • Traversarea prin fiecare nod eficient
  • Utilizatorii pot introduce, căuta, prelua și șterge datele.
  • Structuri de date flexibile

Figura 3: Reprezentarea grafică a unui arbore

Sursă

Exemplu:

Ieșire

Primul

Al doilea

Al treilea

4. Grafic

O altă structură de date neliniară în python este graficul care constă din noduri și muchii. Grafic afișează un set de obiecte, cu unele obiecte conectate prin link-uri. Vârfurile sunt obiecte interconectate, în timp ce legăturile sunt denumite muchii. Reprezentarea unui grafic se poate face prin structura de date dicționar a lui python, unde cheia reprezintă vârfurile, iar valorile reprezintă muchiile.

Operații de bază care pot fi efectuate pe grafice

  • Afișează vârfurile și muchiile graficului.
  • Adăugarea unui vârf.
  • Adăugarea unei margini.
  • Crearea unui grafic

Utilitatea unui grafic

  • Reprezentarea unui grafic este ușor de înțeles și de urmărit.
  • Este o structură excelentă pentru a reprezenta relațiile legate, adică prietenii de pe Facebook.

Figura 4: Reprezentarea grafică a unui grafic

Sursă

Exemplu

g = grafic (4)

g.edge(0, 2)

g.edge(1, 3)

g.edge(3, 2)

g.edge(0, 3)

g.__repr__()

Ieșire

Lista de adiacență a vârfului 0

cap -> 3 -> 2

Lista de adiacență a vârfului 1

cap -> 3

Lista de adiacență a vârfului 2

cap -> 3 -> 0

Lista de adiacență a vârfului 3

cap -> 0 -> 2 -> 1

5. Hashmap

Hashmaps-urile sunt structuri de date Python indexate utile pentru stocarea perechilor cheie-valoare. Datele stocate în hashmaps sunt preluate prin chei care sunt calculate cu ajutorul unei funcții hash. Aceste tipuri de structuri de date sunt utile pentru stocarea datelor studenților, a detaliilor clienților etc. Dicționarele în python sunt un exemplu de hashmap.

Exemplu

Ieșire

0 -> primul

1 -> secundă

2 -> al treilea

0 -> primul

1 -> secundă

2 -> al treilea

3 -> al patrulea

0 -> primul

1 -> secundă

2 -> al treilea

Utilitate

  • Este cea mai flexibilă și mai fiabilă metodă de recuperare a informațiilor decât alte structuri de date.

6. Lista legată

Este un tip de structură de date liniară. Practic, este o serie de elemente de date unite între ele prin link-uri în python. Elementele dintr-o listă legată sunt conectate prin indicatori. Primul nod al acestei structuri de date este denumit antet, iar ultimul nod este denumit coadă. Prin urmare, o listă legată constă din noduri care au valori, iar fiecare nod constă dintr-un pointer legat de un alt nod.

Utilitatea listelor legate

  • În comparație cu o matrice care este fixă, o listă legată este o formă dinamică de introducere a datelor. Memoria este salvată pe măsură ce alocă memoria nodurilor. În timp ce se află într-o matrice, dimensiunea trebuie să fie predefinită, ceea ce duce la risipa de memorie.
  • O listă legată poate fi stocată oriunde în memorie. Un nod de listă conectat poate fi actualizat și mutat într-o altă locație.

Figura 6: Reprezentarea grafică a unei liste legate

Sursă

Exemplu

Ieșire:

['primul, al doilea, al treilea']

[„primul”, „al doilea”, „al treilea”, „al șaselea”, „al patrulea”, „al cincilea”]

[„primul”, „al treilea”, „al șaselea”, „al patrulea”, „al cincilea”]

Concluzie

Au fost explorate diferitele tipuri de structuri de date din python . Indiferent dacă este un începător sau un expert, structurile de date și algoritmii nu pot fi ignorate. În timpul efectuării oricărei forme de operații asupra datelor, conceptele de structuri de date joacă un rol vital. Structurile de date ajută la stocarea informației într-o manieră organizată, în timp ce algoritmii ajută la ghidarea pe parcursul analizei datelor. Prin urmare, atât structurile de date python , cât și algoritmii ajută informaticianul sau orice utilizator să-și proceseze datele.

Dacă sunteți curios să aflați despre structurile de date, consultați Programul Executive PG în știința datelor de la IIIT-B și upGrad, care este creat pentru profesioniști care lucrează și oferă peste 10 studii de caz și proiecte, ateliere practice practice, mentorat cu experți din industrie, 1 -on-1 cu mentori din industrie, peste 400 de ore de învățare și asistență profesională cu firme de top.

Ce structură de date este mai rapidă în Python?

În dicționare, căutările sunt mai rapide, deoarece Python folosește tabele hash pentru a le implementa. Dacă folosim conceptele Big O pentru a ilustra distincția, dicționarele au o complexitate constantă în timp, O(1), în timp ce listele au complexitate liniară în timp, O(n).

În Python, dicționarele sunt cea mai rapidă modalitate de a căuta frecvent date cu mii de intrări. Dicționarele sunt foarte optimizate deoarece sunt tipul de mapare încorporat în Python. În dicționare și liste, totuși, există un compromis comun spațiu-timp. Indică faptul că, deși putem reduce timpul necesar abordării noastre, va trebui să folosim mai mult spațiu de memorie.

În liste, pentru a obține ceea ce îți dorești, trebuie să treci prin lista completă. Un dicționar, pe de altă parte, va returna valoarea pe care o căutați fără a căuta prin toate cheile.

Care este mai rapid în lista sau matricea Python?

În general, listele Python sunt incredibil de flexibile și pot conține date complet eterogene, aleatorii, precum și sunt atașate rapid și într-un timp aproximativ constant. Ele sunt calea de urmat dacă trebuie să reduceți și să extindeți lista rapid și fără durere. Cu toate acestea, ele ocupă mult mai mult spațiu decât matricele, parțial pentru că fiecare element din listă necesită crearea unui obiect Python separat.

Pe de altă parte, tipul array.array este în esență un înveliș subțire în jurul matricelor C. Poate transporta doar date omogene (adică date de același tip), prin urmare memoria este limitată la dimensiunea (un obiect) * lungime octeți.

Care este diferența dintre matricea NumPy și listă?

Numpy este pachetul central de calcul științific al lui Python. Folosește un obiect matrice multidimensional mare, precum și utilități pentru manipularea acestora. O matrice numpy este o grilă de valori de tip identic indexate de un tuplu de numere întregi nenegative.

Listele au fost incluse în biblioteca de bază Python. O listă este similară cu o matrice în Python, dar poate fi redimensionată și poate conține elemente de diferite tipuri. Care este diferența reală aici? Performanța este răspunsul. Structurile de date Numpy sunt mai eficiente în ceea ce privește dimensiunea, performanța și funcționalitatea.