Page 92 - Python Simple
P. 92

11. Giới thiệu sơ về bộ thư viện chuẩn - Phần II                http://www.vithon.org/tutorial/2.5/node13.html



             các thao tác thêm vào và lấy ra đầu bên trái nhanh hơn, nhưng việc tìm kiếm ở giữa thì
             lại chậm hơn. Các đối tượng này thích hợp cho việc cài đặt các hàng đợi và tìm kiếm cây
             theo chiều rộng:

                     >>> from collections import deque
                     >>> d = deque(["task1", "task2", "task3"])
                     >>> d.append("task4")
                     >>> print "Handling", d.popleft()
                     Handling task1

                     unsearched = deque([starting_node])
                     def breadth_first_search(unsearched):
                         node = unsearched.popleft()
                         for m in gen_moves(node):
                             if is_goal(m):
                                 return m
                             unsearched.append(m)

             Ngoài các cấu trúc thay thế cho danh sách, thư viện chuẩn còn cung cấp các công cụ
             như mô-đun bisect chứa các hàm thao tác trên danh sách đã được sắp xếp:
                     >>> import bisect
                     >>> scores = [(100, 'perl'), (200, 'tcl'), (400, 'lua'), (500, 'python')]
                     >>> bisect.insort(scores, (300, 'ruby'))
                     >>> scores
                     [(100, 'perl'), (200, 'tcl'), (300, 'ruby'), (400, 'lua'), (500, 'python')]

             heapq (mô-đun) cung cấp các hàm để cài đặt đống (heap) dựa trên các danh sách thông
             thường. Phần tử có giá trị thấp nhất luôn được giữ ở vị trí đầu tiên. Hàm này rất có ích
             trong các trình ứng dụng đòi hỏi việc truy cập tới phần tử nhỏ nhất mà không cần phải
             sắp xếp lại toàn bộ danh sách:
                     >>> from heapq import heapify, heappop, heappush
                     >>> data = [1, 3, 5, 7, 9, 2, 4, 6, 8, 0]
                     >>> heapify(data)                      # rearrange the list into heap order
                     >>> heappush(data, -5)                 # add a new entry
                     >>> [heappop(data) for i in range(3)]  # fetch the three smallest entries
                     [-5, 0, 1]


             11.8 Số học dấu chấm động thập phân


             decimal (mô-đun) cung cấp kiểu dữ liệu Decimal cho các phép toán dấu chấm động hệ
             thập phân. So với cấu trúc dấu chấm động nhị phân float sẵn có của Python, lớp này rất
             có ích trong các trình ứng dụng về tài chính và các công việc đòi hỏi việc biểu diễn
             chính xác các số thập phân, kiểm soát mức độ chính xác cũng như việc làm tròn các con
             số theo các quy định đề ra, theo dõi vị trí của dấu chấm động hay trong các trình ứng
             dụng mà người sử dụng mong muốn thu được kết quả khớp với kết quả tính toán bằng
             tay.


             Ví dụ như, việc tính 5% thuế trên một cuộc gọi điện giá 70 cent sẽ cho kết quả khác
             nhau nếu sử dụng các phép toán dấy chấm động hệ thập phân và nhị phân. Sự khác biệt
             trở nên rõ rệt nếu kết quả được làm tròn tới cent:

                 >>> from decimal import *
                 >>> Decimal('0.70') * Decimal('1.05')




     6 of 7                                                                                   08/31/2011 10:30 AM
   87   88   89   90   91   92   93   94   95   96   97