Page 36 - Python Simple
P. 36
5. Cấu trúc dữ liệu http://www.vithon.org/tutorial/2.5/node7.html
Bạn cũng có thể thuận tiện dùng danh sách như là hàng đợi (queue), nơi mà
phần tử được thêm vào đầu tiên là phần tử được lấy ra đầu tiên (``vào trước, ra
trước'' hay ``first-in, first-out''). Để thêm một phần tử vào cuối hàng đợi, dùng
append(). Để lấy một phần tử từ đầu hàng đợi, dùng pop() với 0 là chỉ mục. Ví
dụ:
>>> queue = ["Eric", "John", "Michael"]
>>> queue.append("Terry") # Terry arrives
>>> queue.append("Graham") # Graham arrives
>>> queue.pop(0)
'Eric'
>>> queue.pop(0)
'John'
>>> queue
['Michael', 'Terry', 'Graham']
5.1.3 Công cụ lập trình hướng hàm
Có sẵn ba hàm rất hữu dụng khi dùng với danh sách: filter(), map(), và
reduce().
"filter(function, sequence)" trả về một dãy chứa các phần tử từ dãy mà
function(item) có giá trị đúng. Nếu sequence là một string hoặc tuple, thì kết quả
trả về sẽ có cùng kiểu; ngược lại, sẽ luôn luôn là một list. Ví dụ, để tìm một vài
số nguyên tố:
>>> def f(x): return x % 2 != 0 and x % 3 != 0
...
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]
"map(function, sequence)" gọi function(item) với mỗi phần tử trong dãy và trả về
một danh sách các giá trị trả về. Ví dụ, để tính một vài số lập phương:
>>> def cube(x): return x*x*x
...
>>> map(cube, range(1, 11))
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
Có thể truyền vào nhiều dãy; hàm đó phải nhận từng ấy thông số với mỗi phần tử
trong mỗi dãy là một thông số (hoặc None nếu dãy nào đó ngắn hơn dãy còn
lại). Ví dụ:
>>> seq = range(8)
>>> def add(x, y): return x+y
...
>>> map(add, seq, seq)
[0, 2, 4, 6, 8, 10, 12, 14]
"reduce(function, sequence)" trả về giá trị duy nhất được tạo ra từ việc gọi hàm
3 of 11 08/31/2011 07:39 AM