28.01.2015 Views

Tutorial Python - Starship

Tutorial Python - Starship

Tutorial Python - Starship

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

queue = ["Eric", "Ion", "Mihai"]<br />

>>> queue.append("Razvan")<br />

>>> queue.append("Cristi")<br />

>>> queue.pop(0)<br />

’Eric’<br />

>>> queue.pop(0)<br />

’Ion’<br />

>>> queue<br />

[’Mihai’, ’Razvan’, ’Cristi’]<br />

5.1.3 Instrumente de programare funcţională<br />

Există trei funcţii predefinite care sunt foarte utile în lucrul cu liste: filter(), map(), reduce().<br />

Funcţia filter(), cu sintaxa filter(funcţie, secvenţă), întoarce o secvenţă formată din elementele<br />

secvenţei specificate ca parametru, care îndeplineşte condiţia testată de funcţie. Exemplul care urmează calculează<br />

numerele prime din intervalul 2, 25:<br />

>>> def f(x): return x % 2 != 0 and x % 3 != 0<br />

...<br />

>>> filter(f, range(2, 25))<br />

[5, 7, 11, 13, 17, 19, 23]<br />

Funcţia map(), cu sintaxa map(funcţie, secvenţă), apelează funcţia specificată ca parametru pentru<br />

fiecare element din secvenţă, şi întoarce o nouă listă formată din rezultatele întoarse de funcţie. Pentru a calcula<br />

pătratele unor numere dintr-o listă puteţi folosi o secvenţă similară celei ce urmează:<br />

>>> def cube(x): return x*x*x<br />

...<br />

>>> map(cube, range(1, 11))<br />

[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]<br />

Funcţia map() poate accepta ca parametrii mai multe secvenţe. În acest caz funcţia transmisă ca parametru trebuie<br />

să fie modificată corespunzător, astfel încât să accepte acelaşi număr de parametrii câte secvenţe sunt transmise.<br />

Dacă secvenţele sunt diferite ca lungime, atunci când una dintre secvenţe s-a terminat, în loc de un element funcţiei<br />

i se transmite None. Dacă în loc de un nume de funcţie, se transmite funcţiei map() None, atunci funcţia va fi<br />

înlocuită cu o funcţie care va întoarce ca rezultat parametrii primiţi. Puteţi folosi comportamentul funcţiei map()<br />

pentru a genera perchi de numere provenind din două liste:<br />

>>> seq = range(8)<br />

>>> def square(x): return x*x<br />

...<br />

>>> map(None, seq, map(square, seq))<br />

[(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25), (6, 36), (7, 49)]<br />

Funcţia reduce(funcţie, secvenţă) întoarce o valoare simplă care este calculată în felul următor: este<br />

apelată funcţia (obligatoriu o funcţie binară care acceptă numai 2 parametrii), cu parametrii primul şi al doilea<br />

termen al secvenţei. Funcţia întoarce un rezultat care împreună cu al treilea element sunt transmise din nou<br />

funcţiei, care generează un alt rezultat şi aşa mai departe, până ce lista este epuizată.<br />

Exemplul de mai jos calculează suma primelor numere naturale:<br />

5.1. Mai multe despre liste 29

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!