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.

def add(x,y): return x+y<br />

...<br />

>>> reduce(add, range(1, 11))<br />

55<br />

Dacă există un singur element în secvenţăva fi returnată valoarea acestuia. Dacă lista este goală, va fi generată<br />

o excepţie. Funcţia reduce() poate primi şi un al treilea parametru care semnifică valoarea de la care începe<br />

calculul. În acest caz primul apel al funcţiei are ca parametrii această valoare şi primul element al listei. Dacă<br />

funcţia reduce() este apelată cu trei parametrii, iar lista este goală, aceasta va întoarce ca rezultat al treilea<br />

parametru. Iată un exemplu care ilustrează modul de lucru al funcţiei reduce():<br />

>>> def sum(seq):<br />

... def add(x,y): return x+y<br />

... return reduce(add, seq, 0)<br />

...<br />

>>> sum(range(1, 11))<br />

55<br />

>>> sum([])<br />

0<br />

5.1.4 Un alt mod de a genera liste<br />

Există un mod de a crea liste mult mai concis decât prin intermediul funcţiilor map(), filter() sau<br />

lambda(). Definiţia listei este, de cele mai multe ori, mult mai clară decât cea obţinută prin alte metode. Acest<br />

mod generalizat, de a genera, a defini liste constă în asocierea unei expresii, cu o clauză for şi cu niciuna sau<br />

mai multe clauze for sau if. Rezultatul va fi o listă care provine din evaluarea expresiei în contextul clauzelor<br />

for şi if ce urmează. Dacă rezultatul evaluării expresiei va fi o pereche, atunci expresia trebuie parantezată<br />

corespunzător:<br />

>>> freshfruit = [’ banana’, ’ loganberry ’, ’passion fruit ’]<br />

>>> [weapon.strip() for weapon in freshfruit]<br />

[’banana’, ’loganberry’, ’passion fruit’]<br />

>>> vec = [2, 4, 6]<br />

>>> [3*x for x in vec]<br />

[6, 12, 18]<br />

>>> [3*x for x in vec if x > 3]<br />

[12, 18]<br />

>>> [3*x for x in vec if x < 2]<br />

[]<br />

>>> [{x: x**2} for x in vec]<br />

[{2: 4}, {4: 16}, {6: 36}]<br />

>>> [[x,x**2] for x in vec]<br />

[[2, 4], [4, 16], [6, 36]]<br />

30 Capitolul 5. Structuri de date

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

Saved successfully!

Ooh no, something went wrong!