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.

from collections import deque<br />

>>> d = deque(["task1", "task2", "task3"])<br />

>>> d.append("task4")<br />

>>> print "Handling", d.popleft()<br />

Handling task1<br />

unsearched = deque([starting_node])<br />

def breadth_first_search(unsearched):<br />

node = unsearched.popleft()<br />

for m in gen_moves(node):<br />

if is_goal(m):<br />

return m<br />

unsearched.append(m)<br />

Biblioteca oferă, tot pentru alternativa la implementarea cu liste, şi modulul bisect cu funcţii pentru manipularea<br />

listelor sortate :<br />

>>> import bisect<br />

>>> scores = [(100, ’perl’), (200, ’tcl’), (400, ’lua’), (500, ’python’)]<br />

>>> bisect.insort(scores, (300, ’ruby’))<br />

>>> scores<br />

[(100, ’perl’), (200, ’tcl’), (300, ’ruby’), (400, ’lua’), (500, ’python’)]<br />

Modulul heapq conţine funcţii pentru implementarea de heap 2 utilizând listele standard.Valoarea intrării celei<br />

mai mici este ţinută permanent la poziţia zero. Acest lucru este util pentru aplicaţiile în care se accesează repetitiv<br />

elementul cel mai mic, dar nu se doreşte o sortare completă a listei:<br />

>>> from heapq import heapify, heappop, heappush<br />

>>> data = [1, 3, 5, 7, 9, 2, 4, 6, 8, 0]<br />

>>> heapify(data) # rearanjeaza lista in ordinea heap<br />

>>> heappush(data, -5) # se adauga o noua intrare<br />

>>> [heappop(data) for i in range(3)] # aduce cele mai mici trei intrari<br />

[-5, 0, 1]<br />

11.8 Aritmetica în virgulă flotantă zecimală<br />

Modulul decimal oferă, pentru aritmetica în virgulă flotantă, tipul de data Decimal.Comparând–o cu clasa<br />

predefinită float, implementată pentru lucrul în virgulă flotantă binară, noua clasă este necesară în aplicaţiile<br />

financiare şi, în general, în aplicaţiile care necesită : o reprezentare zecimală exactă, o precizie ridicată, o rotunjire<br />

impusă foarte bună, poziţionarea zecimalelor semnificative. O altă întrebuinţare ar fi pentru aplicaţiile în care<br />

utilizatorul doreşte confruntarea calculelor cu cele executate manual.<br />

De exemplu, calculând taxa de 5% pentru o convorbire telefonică de 70 de cenţi, folosind aritmetica în virgulă<br />

flotantă zecimalâ şi cea binară se obţin rezultate diferite :<br />

2 Heap = porţiune de memorie rezervată pentru a fi utilizată de un program ca zonă de stocare temporară a unor structuri de date a căror<br />

mărime, sau existenţă nu se pot determina decât în timpul rulării programilui.<br />

80 Capitolul 11. Pe scurt despre Standard Library - partea II

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

Saved successfully!

Ooh no, something went wrong!