Elemente de bază în
programare Bogdan Cristescu & Adi Apostu
Cursul 4. Tupluri. Strings
Tipuri de date. Tupluri
Ce este un tuplu?
Presupunem că dorim să prelucrăm date referitoare la mai multe persoane și să
spunem că pentru fiecare cunoaștem numele, prenumele, vârsta, înălțimea, orașul și
județul.
Putem crea 6 liste, una pentru fiecare informație, însă precum ați observat, dacă
alterăm (adică modificăm cumva) una dintre liste, indicii nu mai corespund, iar
pozițiile nu mai pot fi accesate corect. Putem folosi tuplurile!
Un tuplu este tot un fel de listă care are însă elementele ordonate și
nemodificabile, iar acestea se definesc între paranteze rotunde:
[Link]
Tipuri de date. Tupluri
Am definit două tupluri, în cazul nostru pentru Mihai și Dana, să spunem. Fiecare element al
tuplurilor reține o anumită informație pe care am introdus-o corespunzător, astfel încât să
obținem o structură de date coerentă.
Știm deci că tuplurile create rețin vârsta la indicele 2, iar județul la 5, etc. Astfel, avem
mecanismul format pentru oricare altă persoană și vom crea un tuplu pentru fiecare.
Obs. Pentru cei ce au studiat C++, tuplurile sunt similare tipului struct.
Nu putem adăuga, șterge sau modifica elementele definite într-un tuplu! Orice operație ne
oferă o eroare la compilare:
[Link]
Operații cu tupluri
Ca și în cazul listelor, putem accesa elementele unui tuplu folosind indici și parantezele
pătrate, cum suntem obișnuiți.
În exemplul de mai jos am folosit indicii direct ori am selectat doar o parte dintre ei, apoi
indecșii negativi și inversarea tuplului.
Pentru a afla lungimea unui tuplu, folosim funcția deja cunoscută
len().
[Link]
Tupluri. Operatori
Operatorul in și grupul not in - aceștia testează dacă o valoare se regăsește sau nu
în colecția de date respectivă. Rezultatul este unul boolean, deci adevărat (True)
sau fals (False).
Ștergerea unui tuplu - ștergerea unui element / obiect din cadrul unui tuplu este
interzisă. Totuși, putem șterge complet tuplul prin folosirea cuvântului cheie del.
Testați! Exemplu: del pers2. După această comandă, bineînțeles că în program nu
mai puteți accesa variabila pers2.
Operatorii + și * - operatorul "+" alătură două sau mai multe tupluri, iar operatorul
"*" are rolul de multiplicare a elementelor.
[Link]
Tupluri. Metode / funcții utile
Există două metode care pot fi folosite pentru tipul de date tuple și anume count() și
index(). Metoda count(dată) întoarce numărul de apariții ale obiectului trimis ca parametru
în cadrul tuplului.
Metoda index(obiect) întoarce prima poziție (indexul) a obiectului în cadrul tuplului. Obs.
Dacă valoarea nu este găsită, metodele întorc o eroare de interpretare și nu o anumită valoare! Așadar, atenție la
crearea programelor deoarece se sistează executarea acestora la apariția unei astfel de erori.
Funcții built-in, cum ar fi: min(), max(), len(), reversed(), sum(), etc.
Funcția sorted() întoarce o listă cu elementele unui tuplu în ordine crescătoare/
descrescătoare. Exemplu. sorted(tuplu) sau sorted(tuplu, reverse=True).
[Link]
Tupluri. Modificarea unui
tuplu
Să presupunem că am introdus greșit valorile elementelor unui tuplu ori, în cadrul
programului, pur și simplu avem nevoie de modificări. Obiectul este implicit
nemodificabil, așadar vom folosi un truc – conversia explicită.
Pasul 1. Listele sunt obiecte modificabile, deci creăm una numită temp care să
conțină toate elementele tuplului pers1.
Pasul 2. Astfel, putem să rescriem elementul de pe poziția a doua din lista temp
corespunzător. Pasul 3. Acum că este totul corect și cum ne-am dorit, reținem în
variabila pers1 datele, convertind explicit lista temp spre tipul tuple cu ajutorul
constructorului său.
[Link]
Strings
Un string este un șir de caractere – de exemplu numele este un string sau numele
țării „Romania” este un string.
Definirea unui string se face cu apostrof simplu sau dublu.
Strings
Stringurile pot fi indexate – elementele individuale
din setul ordinat de date poate fi accesat direct prin
folosirea unui index numeric.
În Python, stringurile sunt șiruri ordonate de date tip
„character” și pot fi accesate prin indexare,
specificând numele stringului, urmat de un număr
între paranteze pătrate.
Ca și în cazul listelor, indexarea pornește de la 0,
adică primul element are indexul 0, al doilea indexul
1 etc. ceea ce înseamnă că ultimul element va avea ca
index lungimea stringului minus 1.
Strings - slicing
Ca și în cazul listelor, o comandă de tipul s[m:n] îmi va returna
porțiunea din string care începe cu elementul de index m și până
la elementul de index n, fără a-l include.
Dacă nu scriem primul index, „felierea” va începe de la
începutul stringului, ceea ce înseamnă că s[:n] și s[0:n] sunt
comenzi echivalente. Similar este cazul omiterii ultimului
index.
Strings
Stringurile nu pot fi transformate prin
schimbarea unui element de la un anumit
index.
Dar...sigur există o soluție....
Strings. Metode
- Găsirea unui index al unui element
- Lipisea unor stringuri prin folosirea join -
Splitarea unor strinuri pe baza unor reguli - Splitarea
pe baza unui caracter de delimitare
- Scoaterea spațiilor de la începutul și
sfârșitul unui string
- Scoaterea anumitor caractere dintr-un string
Strings. Metode
Vă mulțumesc!