Python
Python
Caracterul escape
Caracterul escape este unul special care e ilustrat de un backslash (\) ce apare înăuntrul unui șir
literal.
Ex.
print(‘Unu\nDoi\nTrei’)
afișează:
Unu
Doi
Trei
ceea ce înseamnă că \n reprezintă o linie nouă (n vine de la new line).
Când operatorul + se folosește la adunarea șirurilor se cheamă concatenare (legare).
Când un număr în virgulă mobilă e afișat pe ecran, el poate avea și 12 zecimale.
Cum facem totuși ca rezultatul să nu mai apară ca o inșiruire grosiera de numere? Simplu:
invocăm funcția format. Când invoci funcția format, îi treci două argumente:
- o valoare numerică
- un specificator de format
1
Omiterea primului sau celui de-al doilea indice în specificarea parametrilor unui sub¸sir, are ca
efect înlocuirea primului indice cu zero, respectiv cu lungimea ¸sirului din care se încearc˘a
extragerea sub¸sirului, dac˘a se omite al doilea parametru.
>>> word[:2] # Primele doua caractere
’He’
>>> word[2:] # Tot \c{s}irul \^{i}nafara de primele doua caractere
’lpA’
Indicii pot fi ¸si numere negative, în acest caz se considera ca indicele zero se afla cel mai la
dreapta:
>>> word[-1] # ultimul caracter
’A’
Mai jos ave¸ti un tabel care v˘a va ajuta la în¸telegerea mecanismului de numerotare al unui sir
de caractere:
+---+---+---+---+---+
|H|e|l|p|A|
+---+---+---+---+---+
012345
-5 -4 -3 -2 -1
La fel ca ¸si la ¸siruri, primul element al unei liste are indicele 0. În acela¸si fel ca ¸si la
¸siruri, listele pot fi pozi¸tionate,
concatenate ¸si a¸sa mai departe:
>>> a[0]
’spam’
>>> a[3]
1234
>>> a[-2]
100
>>> a[1:-1]
[’eggs’, 100]
>>> a[:2] + [’bacon’, 2*2]
[’spam’, ’eggs’, ’bacon’, 4]
>>> 3*a[:3] + [’Boe!’]
[’spam’, ’eggs’, 100, ’spam’, ’eggs’, 100, ’spam’, ’eggs’, 100, ’Boe!’]
Spre deosebire se ¸siruri, elementele unei liste pot fi modificate:
>>> a
2
[’spam’, ’eggs’, 100, 1234]
>>> a[2] = a[2] + 23
>>> a
[’spam’, ’eggs’, 123, 1234]
Func¸tia len() se aplic˘a ¸si listelor :
>>> len(a)
4
Utilizarea sublistelor este de asemenea posibil˘a. Prin folosirea lor se poate modifica chiar ¸si
dimensiunea listei :
>>> # substituirea unor componente :
... a[0:2] = [1,12]
>>> a
[1,12,123,1234]
>>> # eliminarea unor componente :
... a[0:2] = []
>>> a
[123,1234]
>>> # inserarea unor componente :
... a[1:1] = [’bletch’,’xyzzy’]
>>> a
[123,’bletch’,’xyzzy’,1234]
>>> # inserarea unei liste la debutul ei
... a[:0] = a
>>> a
[123,’bletch’,’xyzzy’,1234,123,’bletch’,’xyzzy’,1234]
>>> len(a)
8
Este posibil s˘a crea¸ti liste din alte liste (de exemplu prin concatenare):
>>> q = [2, 3]
>>> p = [1, q, 4]
>>> len(p)
3
>>> p[1]
[2, 3]
>>> p[1][0]
2
>>> p[1].append(’xtra’) # See section 5.1
>>> p
[1, [2, 3, ’xtra’], 4]
>>> q
[2, 3, ’xtra’]
3
Specificatorul de format (format specifier) este un șir care conține caractere speciale ce arată
cum valorile numerice trebuiesc formatate.
Ex: format (12345.6789, ‘.2f’)
Primul argument, care este un număr în virgulă mobilă (12345.6789), este numărul pe care
vrem să-l formatăm.
Al doilea argument este un șir – ‘.2f’ – și reprezintă specificatorul de format.
Iată ce înseamnă el luat “pe bucăți” :
.2 specifică precizia; el arată că vrem să rotunjim numărul la două zecimale.
f vine de la float și specifică faptul că numărul pe carel formatăm este în virgulă mobilă (pentru
formatarea întregilor, cum vom vedea, nu se folosește litera f ci d).
În aceste condiții, funcția format returnează un șir care conține numărul formatat:
>>> print(format(12345.6789, ‘.2f’)) #[Enter]
12345.68
Formatarea șirurilor
Șirurile și alte obiecte au o sintaxă specială pentru funcții numită metodă, asociată unui tip
particular de obiect. Obiectele de tipul șir (str) au o metodă numita format. Sintaxa pentru
această metodă conține obiectul urmat de punct urmat de numele metodei și următorii
parametri dintre paranteze:
obiect.nume_metoda(parametri)
În exemplul de mai sus obiectul este șirul ‘Salut {}’ iar metoda este format.
Parametrul este nume.
După cum se observă la ieșire, acoladele sunt înlocuite de valoarea preluată din lista
parametrilor metodei format. Deoarece acoladele au un înțeles special în formatarea șirurilor,
este nevoie de o regulă specială dacă vrem ca ele să fie incluse în formatarea finală a șirurilor.
Regula este dublarea acoladelor: ‘{{‘ și ‘}}’
Capitolul II FUNCȚII
Definirea unei functii se face cu ajutorul cuvantului def (define). Codul unei funcții este (și)
definiția unei funcții. Ca să execuți o funcție, scrii pur si simplu declarația care o invocă
(numele funcției) urmată de paranteze ().
Indentarea (Important!!!)
Într-un bloc indentarea se face cu același număr de linii. De obicei se folosește tab-ul sau
patru spații. Dacă în același program folosim o dată patru spații , altădată tabul sau trei,
cinci ori “n” spații, programul va da eroare de indentare.
Funcția lambda
Python permite crearea unei funcții anonime folosind cuvântul cheie lambda. O funcție
anonimă poate să conțină doar o singură expresie care neapărat trebuie să returneze o valoare.
Altfel ca la crearea unei funcții comune care folosește def, o funcție creată cu lambda
returnează un obiect funcție. Acesta poate fi atribuit unei variabile care poate fi folosită în orice
moment ca să execute expresia conținută. Să vedem cum arată în Terminal o funcție normală,
aceeași funcție creată cu ajutorul cuvântului cheie lambda și o funcție lambda căruia nu-i
atribuim nicio variabilă (da, permite și acest lucru!).
Operatori logici:
Sunt: and, or, not.
Variabile booleene
O variabilă booleană poate referi două valori: TRUE sau FALSE. Ele arată dacă o condiție
există. Variabilele booleene sunt folosite ca indicatori. Un indicator este o variabilă care
semnalizeaza când o condiție există în program.
Bucle
Buclele sunt acele părți dintr-‐-un program care sunt folosite ca să execute o declarație atâta
timp cât o expresie este adevărată.
3.7. Bucla while – o buclă controlată
O condiție controlată face ca o declarație sau un bloc de declarații să se repete atâta timp
cât o condiție e adevărată. Python folosește declarația (bucla) while ca să scrie o astfel de
condiție.
buclă while e asemănătoare condiționalei if cu diferența că cea din urmă funcționeazădoar o
singură dată iar while până când condiția ei este atinsă
Bucla infinită
7
Să spunem că avem următorul exemplu de buclă while:
numar = 0
while numar < 10:
print(numar)
În acest program valoarea variabilei numar nu se schimbă niciodată și deci declarația
numar < 10 este întotdeauna adevărată. Python va afișa la infinit numărul 0. Ca să oprim
bucla infinită trebuie pur și simplu să întrerupem brutal shell-‐-ul Python. Există însă o
posibilitate de a întrerupe o buclă infinită atunci când scriem programul. Pentru aceasta
folosim declarația break:
x=0
numar = 1
while x < 10 and numar > 0:
numar = int(input(’Introdu un numar: ’))
break
Bucla for
Bucla for iterează de un număr specific de ori.
Funcția for …in range produce o secvență de numere care crește cu valoarea 1 fiecare
număr succesiv din listă până când este atinsă valoarea 5 inclusiv. Să vedem ce se întâmplă
cu următoarea declarație:
for numar in range(1, 10, 2):
print(numar)
Primul argument este 1 iar ultimul argument este 10. Dar ce reprezintă numărul 2 ? Acesta
este folosit ca valoarea de pas (step valor sau pas). Astfel, fiecare număr succesiv din
secvență în loc să crească cu 1, va crește cu valoarea pasului, în cazul nostru 2. Deci 2 va fi
adăugat fiecărui număr succesiv din secvență:
Functia range()
Daca este necesara o iteratie pe o multime de numere, puteti folosi functia range() pentru a
genera liste ce contin progresii aritmetice :
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Acumulatori
Un total de funcționare (running total) este o sumă de numere care acumulează fiecare
iterare (trecere, execuție) a unei bucle. Variabila folosită ca să înmagazineze totalul se
cheamă acumulator.
Să luăm un program care demonstrează un acumulator:
#Acest program calculeaza suma unei serii
#de numere introduse de user
#Ia constanta pentru numarul maxim
MAX = 5 (Reține! Constanta se pune la început)
Def main():
#Initializeaza variabila acumulator
total = 0.0 (acumulatorul se ințializează întotdeauna cu 0.0)
#Explica ceea ce faci
print(‘Acest program calculeaza suma’)
print(MAX, ‘numerelor introduse.’)
#Ia numerele si acumuleaza-le
for counter in range(MAX):
9
number = int(input(‘Introdu un numar: ’))
total = total+number
#Afiseaza totalul numerelor
print(‘Totalul este’, total)
#Cheama functia principala
main()
Bucle imbricate
O buclă aflată înăuntrul altei bucle se cheamă imbricată.
Capitolul IV Module
O funcție care returnează valori este o funcție care trimite înapoi o valoare părții din
program care a chemat-‐-o. Python oferă o bibliotecă (pre) scrisă de funcții care face asta.
10
Această bibliotecă conține o funcție care generează numere aleatoare (întâmplătoare).
Când invoci o funcție stocată într-‐-un modul, trebuie să scrii o declarație de import în
partea cea mai de sus a programului. Spre exemplu, să luăm modulul numit math. El
conține funcții matematice care lucreză cu numere reale (în virgulă mobilă). Dacă vrei să
folosești modulul math trebuie să scrii în vârful programului o declarație ca aceasta:
import math
11
returnează o listă de valori. În loc de asta, ea returnează o valoare aleatoare dintr-‐-o
secvență de valori.
De exemplu, următoarea declarație atribuie un număr aleator situat între 0 și 9 variabilei
numar:
numar = random.randrange(10)
Argumentul – în cazul nostru 10 – specifică limita unei secvențe de valori. Funcția va
returna un număr aleator selectat din secvența de la 0 în sus dar nu include limita sfârșitului,
adică numărul 10.
Următoarea declarație specifică și valoarea de început dar și de sfârșit a secvenței:
numar = random.randrange(5, 10)
Când această declarație e executată, un număr întâmplător cuprins între 5 și 9 va fi atribuit
variabilei număr.
Modulul matematic
Modulul math conține numeroase funcții care pot fi folosite în calcule matematice
Ex:
rezultat = math.sqrt(16)
Funcția sqrt acceptă argumentul 16 și îi returnează rădăcina pătrată (care e 4).
Valorarea math.pi
Suprafața cercului este constanta pi înmulțită cu raza cercului la pătrat, după cum bine
știm din clasa a VII-‐-a, de la studiul geometriei plane:
suprafata = math.pi*radius**2
Ce se întâmplă? Suprafața cercului este S=pi**r (unde r este raza cercului) la pătrat. Dar
cum pi este o constantă universală care aparține modulului matematic, trebuie să scriem
math.pi.
Modulul calendar
Sa luam de exmplu modulul implicit Python calendar. El se importa ca oricare alt modul,
asa cum am aratat mai devreme, cu declaratia import:
import calendar
Ca să afișăm de exemplu cum arăta anul Revoluției 1989 trebuie să ne referim la funcția
inclusă în modulul calendar, prcal (printează calendar) folosind notația cu punct:
calendar.prcal()
Programul următor afișeaza anul amintit:
12
import calendar
an = int(input(’Introdu anul dorit: ’))
prcal(an)
Strucuri de date
Tipul de date list˘a mai dispune de câteva metode. Iat˘a toate metodele obiectelor de tip list˘a:
append(x) Adaug˘a un element la sfâr¸situl listei.
extend(L) Adaug˘a la sfâr¸situl listei, elementele listei furnizate ca parametru.
insert(i, x) Insereaz˘a un element într-o anumit˘a pozi¸tie. Primul argument reprezint˘a indicele elementului din
list˘a înaintea c˘aruia se va face inser¸tia, deci a.insert(0,x) va insera elementul ’x’ la începutul listei, iar
a.insert(len(a),x) este echivalent cu a.append(x).
remove(x) ¸ Sterge din list˘a primul element g˘asit cu valoarea ’x’. Dac˘a nu exist˘a un astfel de element apare o
eroare.
pop([i]) ¸ Sterge din list˘a elementul de pe pozi¸tia ’i’, ¸si întoarce valoarea acestuia. Dac˘a nu este specificat nici
un
parametru a.pop(), va ¸sterge ¸si va returna ultimul element din list˘a.
index(x) Întoarce indicele primului parametru din list˘a care are valoarea ’x’.
count(x) Întoarce num˘arul de apari¸tii ale valorii ’x’ între elementele listei.
sort() Sorteaz˘a elementele listei.
reverse() Schimb˘a ordinea elementelor din list˘a.
Pute¸ti folosi listele foarte convenabil, pentru a implementa cozi. Spre deosebire de stive unde primul element
ad˘augat
este ultimul scos, la cozi primul element ad˘augat este primul scos. Pentru a ad˘auga un element folosi¸ti append(),
iar pentru a extrage un element folosi¸ti pop(0):
13
secven¸tei specificate ca parametru, care îndepline¸ste condi¸tia testat˘a de func¸tie. Exemplul care urmeaz˘a
calculeaz˘a
numerele prime din intervalul 2, 25:
>>> def f(x): return x % 2 != 0 and x % 3 != 0
...
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]
Func¸tia map() cu sintaxa map(func¸tie, secven¸t˘a), apeleaz˘a func¸tia specificat˘a ca parametru pentru fiecare
element din secven¸t˘a, ¸si întoarce o nou˘a list˘a format˘a din rezultatele întoarse de func¸tie. Pentru a calcula
p˘atratele
unor numere dintr-o list˘a pute¸ti folosi o secven¸t˘a similar˘a celei ce urmeaz˘a:
>>> def cube(x): return x*x*x
...
>>> map(cube, range(1, 11))
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
Func¸tia map() accept˘a ca parametrii mai multe secven¸te. În acest caz func¸tia transmis˘a ca parametru trebuie
s˘a fie
modificat˘a corespunz˘ator, trebuie s˘a accepte acela¸si num˘ar de parametrii câte secven¸te sunt transmise. Dac˘a
secven¸tele
sunt diferite ca lungime, atunci când una dintre secven¸te s-a terminat, în loc de un element func¸tiei i se transmite
None.
Dac˘a în loc de un nume de func¸tie, se transmite None func¸tiei map(), atunci func¸tia va fi înlocuit˘a cu o
func¸tie care
va întoarce ca rezultat parametrii primi¸ti. Pute¸ti folosi comportamentul func¸tiei map() pentru a genera perchi de
numere provenind din dou˘a liste:
>>> seq = range(8)
>>> def square(x): return x*x
...
>>> map(None, seq, map(square, seq))
[(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25), (6, 36), (7, 49)]
Func¸tia ‘reduce(func¸tie, secven¸t˘a)’ întoarce o simpl˘a valoare care este calculat˘a în felul urm˘ator: este
apelat˘a func¸tia (care este obligatoriu o func¸tie binar˘a ce accept˘a numai 2 parametrii), cu parametrii primul ¸si
al doilea
termen al secven¸tei, func¸tia întoarce un rezultat care împreun˘a cu al treilea element sunt transmise din nou
func¸tiei,
care genereaz˘a un alt rezultat ¸si a¸sa mai departe, pân˘a ce lista este epuizat˘a.
Instruc¸tiunea del
Exist˘a o metod˘a de a ¸sterge un element dintr-o list˘a specificând indicele elementului în loc de valoarea
elementului.
Aceast˘a metod˘a poate fi folosit˘a ¸si pentru a ¸sterge por¸tiuni dintr-o list˘a. Toate acestea pot fi realizate
utilizând
14
instruc¸tiunea del:
>>> a
[-1, 1, 66.6, 333, 333, 1234.5]
>>> del a[0]
>>> a
[1, 66.6, 333, 333, 1234.5]
>>> del a[2:4]
>>> a
[1, 66.6, 1234.5]
del poate fi folosit˘a ¸si pentru a ¸sterge variabile, de exemplu o întreag˘a list˘a:
>>> del a
Tipuri de fișiere
Sunt două tipuri de fișiere: text și binare.
Un fișier text conține date care au fost codificate în text folosind scheme ca ASCII sau
Unicode. Chiar dacă fișierele conțin numere, ele sunt stocate ca o serie de caractere. Drept
rezultat, fișierul poate fi deschis și văzut într-‐-un editor de text precum Notepad sau Word.
Un fișier binar conține date care sunt convertite în text. Ca urmare, nu le poți citi cu un editor
de text.
15
Este timpul să introducem un alt tip de funcții care se cheamă metode.
O metodă este o funcție care aparține unui obiect și care face unele operații folosind acel
obiect. Odată ce ai deschis un fișier, folosești metoda fișierului obiect ca să poți face operații
pe fișier. De exemplu, obiectul fișier are o metodă numită ‘write’ care poate fi folosit ca să
scrii date într-un fișier.
Iată formatul general și cum să invoci metoda write:
file_variable.write(string)
În această declarație, file_variable este o variabilă care referă un fișier obiect și string este un
șir care va fi scris în fișier. Fișierul trebuie să fie deschis pentru scris (‘w’ sau ‘a’) altfel
vaapărea o eroare.
Exemplu complet de program (presedinti.py)
#Acest program scrie trei linii de date
#intr-un fisier
def main():
#Deschide un fisier numit presedinti.txt
outfile = open(‘presedinti.txt’, ‘w’) 5
#Scrie numele presedintilor Romaniei 6
#in fisier
outfile.write(‘Ion Iliescu\n’) 8
outfile.write(‘Emil Constantinescu\n’) 9
outfile.write(‘Traian Basescu\n’) 10
#Inchide fisierul
outfile.close() 12
#Cheama functia principala
main()
Declarația din linia 5 deschide fișierul pentru citit folosind modul ‘r’. De asemenea creează un
fișier obiect pe care îl atribuie variabilei infile. Linia 7 invocă metoda infile.read ca să îi
citească conținutul. Conținutul este citit în memorie ca un șir și atribuit variabilei file_contents.
16
Putem de asemenea folosi metoda readline ca să citim doar o linie dintr-un fișier. Metoda
returnează o linie ca pe un șir.
17
Fișiere binare
Următorul exemplu creează un fișier binar. Pentru aceasta folosim modul ’wb’ (binar.py):
str = 'Salutare si voiosie!'
fisier = open('fisier_binar.bin', 'wb')
fisier.write(str.encode('utf-8'))
fisier.close()
fisier = open('fisier_binar.bin', 'rb')
fisiercontinut = fisier.read()
fisier.close()
print('Continutul fisierului este:')
print(fisiercontinut.decode('utf-8'))
Programul binar.py creează un fișier numit fisier_binar.bin în modul write și
stochează în el șirul ”Salutare si voiosie!”. Șirul este codificat în sistemul UTF-8 înainte de
fi scris în fișier. Fișierul este apoi închis. Ca sa confirmăm că șirul este stocat corect în fișier,
îl deschidem cu modul read.
Excepții
O excepție este o eroare care apare atunci când un program rulează și care are drept
consecință oprirea lui brutală. Pentru mânuirea excepțiilor se folosește blocul de declarații
try/except .
El împarte două numere. Atunci când userul vrea să împartă un număr la zero, apare o
excepție sau o eroare numită traceback. Ea dă informații cu privire la numărul liniei (liniilor)
care cauzează excepția. Când se întâmplă să avem de a face cu o excepție, spunem că
programul “a ridicat o excepție”. Ele pot fi prevenite scriind codul cu atenție.
Să rescriem codul de mai sus (impartire2.py) astfel încât excepția să nu mai apară:
#Programul imparte un numar al altul
def main():
#Ia doua numere
num1=int(input(‘ia un numar: ’))
num2=int(input(‘ia al doilea numar: ’))
#Daca num2 nu este 0, imparte num1 la num2
#si afiseaza rezultatul
if num2 != 0:
result = num1 / num2
print(num1, ‘impartit la’, num2, ‘este’, result)
else:
print(‘Impartirea la zero este imposibila.’)
#Cheama main
18
main()
După cum poate v-ați dat seama, excepțiile trebuiesc pur și simplu ghicite atunci când
programatorul scrie programul. El trebuie să-si puna mereu întrebarea Ce s-ar întâmpla
dacă?
Tabelul de mai jos arata exceptiile care pot aparea atunci cand un program este evaluat de
interpretor:
AssertionError Apare atunci cand declaratia esueaza
AttributeError Atributul nu este gasit in obiect
EOFError Cand se incearca citirea dincolo de sfarsitul unui
fisier
FloatingPointError Apare cand operatia cu un numar in virgula mobila
esueaza
IOError Cand o operatie I/O esueaza
IndexError Cand se foloseste un index aflat in afara gamei
(range)
KeyError Cand o cheie nu este gasita
OSError Cand invocarea unui sistem de operare esueaza
OverflowError Cand o valoarea este prea mare ca sa poata fi
reprezentata
TypeError Cand un argument de un tip nepotrivit este furnizat
ValueError Cand valoarea unui argument nu este potrivita
ZeroDivisionError Cand un numar se imparte la zero ori cand al doilea
argument intr-‐-o operatie modulo este zero
Liste
O listă este un obiect care conține itemi multipli. Este similară matricei din alte limbaje de
programare. Listele sunt mutabile ceea ce înseamnă că conținutul lor poate fi schimbat pe
timpul execuției programului. Listele sunt structuri dinamice de date adică itemii lor pot fi
adăugați sau șterși. Pentru aceasta se poate folosi indexarea, felierea (slicing) dar și alte
metode de lucru cu liste.
Fiecare item dintr-o listă se cheamă element al listei.
Iată cum arată o declarație de creare a unei liste de întregi (ex):
numere_impare=[1, 3, 5, 7, 9]
Elementele listei sunt incluse între paranteze drepte și sunt despărțite între ele prin virgulă.
Să luam un exemplu de listă cu șiruri:
nume= [‘Mircea’, ‘Dana’, ‘Marcel’, ‘Stanel’]
O listă poate să conțină tipuri diferite de valori:
lista = [‘Stanel’, 51, 4.157]
Lista “lista” conține un șir (Stanel), un întreg (51) și o valoare în virgulă mobilă (4.157).
Pentru afișarea conținutului listei folosim funcția print( ) ca mai jos:
print (lista)
19
Operatorul de repetiție
Operatorul de repetiție face copii multiple unei liste și le pune laolaltă. Forma generală
este:
lista * n
Indexarea
O metodă de accesare a elementelor individuale dintr-o listă este cu ajutorul unui index.
Fiecare element al listei are un index specific care-l poziționează în listă. Numărarea
elementelor dintr-o listă începe de la zero (0) , așa că primul element are indexul 0, al doilea
are indexul 1, al treilea are indexul 2 s.a.m.d.
Funcția len
Cu ajutorul funcției len putem afla lungimea unei liste.
Să luăm următorul cod:
lista = [1, 2, 3, 4, 5]
lungime = len(lista)
Funcția len poate fi folosită ca să prevină o excepție IndexError atunci când iterăm peste o
listă cu o buclă:
lista = [1, 2, 3, 4, 5]
index = 0
while index < len(lista):
print(lista[index])
index +=1
Metoda index
Uneori dorim să știm unde se află un item dintr-o listă. Pentru aceasta folosim metoda index.
Trecem un argument metodei index și ea returnează index-ul primului element din listă care
conține acel item. Dacă itemul nu este găsit, programul va ridica o excepție ValueError.
Metoda insert
Această metodă permite să adaugi un item într-o listă pe o poziție specifică. Ca să faci asta
trebuie să treci două argumente metodei insert: un index care specifică locul unde itemul ar
trebui să fie inserat și itemul pe care dorești să-l inserezi.
Metoda sort
Metoda sort rearanjează elementele unei liste așa încât ele să apară în ordine ascendentă.
Declaratia del
Cu această declarație ștergem un element din listă:
Func¸tia dir()
Func¸tia integrat˘a dir() poate fi folosit˘a pentru a determina ce nume(de variabile, func¸tii, etc.) define¸ste un
modul.
Rezultatul acestei func¸tii este o list˘a sortat˘a de ¸siruri de caractere:
Dac˘a func¸tia dir() este apelat˘a f˘ar˘a argumente, va lista numele ce sunt definite (local) pân˘a în momentul
curent:
>>> a = [1, 2, 3, 4, 5]
>>> import fibo, sys
>>> fib = fibo.fib
>>> dir()
[’__name__’, ’a’, ’fib’, ’fibo’, ’sys’]
Observa¸ti c˘a listeaz˘a diferite tipuri de nume: variabile, func¸tii, module, etc.
dir() nu listeaz˘a ¸si numele de func¸tii sau variabile integrate. Dac˘a dori¸ti o astfel de list˘a, pute¸ti apela
dir(__builtin__), unde __buildin__ este modulul în care se afl˘a func¸tiile ¸si variabilele integrate:
Acest exemplu demonstreaz˘a utilizarea func¸tiei string.rjust(), care aliniaz˘a la dreapta un ¸sir de caractere,
într-un câmp de o anumit˘a dimensiune dat˘a, introducând spa¸tii la stânga ¸sirului. Exist˘a ¸si alte func¸tii similare
string.ljust(), string.center(). Aceste func¸tii nu afi¸seaz˘a nimic, nu fac decât s˘a returneze un alt ¸sir
de caractere. Dac˘a ¸sirul primit este mai lung, aceste func¸tii nu îl modific˘a, ci îl returneaz˘a intact. Acest
mecanism
probabil c˘a v˘a va strica aranjarea pe coloane, dar este o variant˘a preferabil˘a celeilalte, adic˘a trunchierea
¸sirului.
Dac˘a dori¸ti s˘a truchia¸ti un ¸sir, pute¸ti oricând s˘a folosi¸ti opera¸tiile de por¸tionare (slicing), ca de exemplu:
string.ljust(x,n)[0:n].
Mai exist˘a o func¸tie util˘a, care ”umple” cu zero-uri un ¸sir, ad˘augându-le la stânga ¸sirului original, pân˘a când
acesta
ajunge la o anumit˘a dimensiune. Aceast˘a func¸tie este string.zfill():
22
Tupluri
Un tuplu este o secvență imutabilă, ceea ce înseamnă că conținutul ei nu se poate schimba.
Un tuplu seamană foarte mult cu o listă cu diferența că o dată creat, elementele lui nu se
pot schimba. Elementele unui tuplu se închid între o pereche de paranteze,.
De fapt, tuplurile suportă aceleași operații ca listele cu excepția celor care schimbă
conținutul. Tuplurile suportă următoarele operații:
- Subscrierea indecsilor
- Metode ca index
- Functii preconstruite: len, min și max
- Operații de feliere (slicing)
- Operatorul in
- Operatorii + si *
Tuplurile nu suportă metode ca append, remove, insert, reverse sau sort.
Când vrei să creezi un tuplu cu un singur element, acel element trebuie urmat neapărat de
virgulă:.
Motivul pentru care tuplurile există este acela că tuplurile sunt mai rapide ca listele. Aceasta
înseamnă că tuplurile sunt o bună alegere atunci când se procesează date foarte multe care nu
urmează a fi modificate. Un alt motiv este acela că tuplurile sunt sigure. Pentru că nu li se pot
modifica elementele, nimeni nu poate să le manipuleze accidental. Există două functii care pot
converti tuplurile în liste și invers. Acestea sunt: list( ) și tuple( ) :
Dicționare
Un dicționar e un obiect care stochează o colecție de date. Fiecare element dintr-un dicționar
are două părți: o cheie și o valoare. Folosim cheia ca să localizăm valoarea.
În acest exemplu cheile și valorile sunt șiruri. Totuși, elementele unui dicționar pot fi de orice
tip numai că – spre deosebire de liste, cheile sunt imutabile. Cheile pot fi șiruri, întregi, în
virgulă mobila sau tupluri. Cheile nu pot fi însa liste (am învățat deja că listele au elemente
mutabile).
Folosirea operatorilor “in” și “not in” pentru testarea unei valori dintr-un dicționar
Ca să prevenim eroarea de mai sus putem folosi operatorul in dintr-‐-o declaratie if ca să
vedem dacă o cheie există în dicționar.
23
Adăugarea unor elemente dicționarului
Dicționarele sunt obiecte mutabile. Putem să le adăugam noi perechi de elemente cu o
declarație de următoarea formă:
nume_dictionar[cheie] = valoare
Trebuie să mai reținem că într-un dicționar nu putem avea valori duplicat. Când atribuim o
valoarea unei chei existente, aceasta îi va lua locul celei vechi.
Ștergerea elementelor dintr-un dicționar
Forma generala este:
del nume_dictionar[cheie]
Dicționar gol
Un dicționar gol se creează printr-o simplă declarație de forma generală:
>>>dictionar = { }
sau în cazul nostru
>>>carte_telefon = { }
După aceea putem să-‐-i adăugăm elemente:
>>>carte_telefon[‘Ion’] = ‘0245345789’
>>>carte_telefon[‘Costel’] = ‘0743123098’
>>>carte_telefon[‘Florina’] = ‘0250445566’
Pentru crearea unui dicționar gol se mai poate folosi și funcția preconstruită dict( ).
Seturi
Un set este un obiect care stochează o colecție de date. Un set are câteva caracteristici:
- Toate elementele setului sunt unice, adică doua elemente nu pot avea aceeași valoare
- Seturile sunt structuri neordonate, ceea ce înseamnă că elementele lui pot sta în orice
ordine
- Elementele setului pot fi de diferite tipuri.
24
Pentru a crea un set, invocăm functia preconstruita set:
setul_meu = set()
Aici aveam de-‐-a face cu un set gol de elemente. Ca să-‐-i adăugăm elemente, i le trecem
drept argumente ale functiei set():
setul_meu = set([‘a’, ’b’, ’c’])
sau
setul_meu = set(‘abc’)
Pentru adăugarea de elemente setului se utilizează metoda add (legată cu punct, desigur):
Se poate folosi și metoda update:
Pentru ștergerea elementelor unui set se pot folosi metodele remove sau discard. Itemul
pe care-l vrem șters din set îl trecem drept argument al uneia dintre aceste metode.
Ca sa iterăm peste elementele unui set putem să folosim bucla for:
Uniunea a doua seturi contine elementele celor doua seturi si se realizeaza cu metoda
union:
25