Page 39 - Python Simple
P. 39
5. Cấu trúc dữ liệu http://www.vithon.org/tutorial/2.5/node7.html
5.3 Bộ và dãy
Chúng ta đã thấy rằng danh sách và chuỗi có nhiều thuộc tính chung, như là có
chỉ mục, và các toán tử cắt miếng. Chúng là hai ví dụ của dãy (sequence) kiểu
dữ liệu. Vì Python là một ngôn ngữ đang phát triển, các kiểu dữ liệu dãy khác có
thể được thêm vào. Có một kiểu dãy chuẩn khác: bộ (tuple).
Một tuple gồm một số các giá trị phân cách bởi dấu phẩy, ví dụ:
>>> t = 12345, 54321, 'hello!'
>>> t[0]
12345
>>> t
(12345, 54321, 'hello!')
>>> # Tuples may be nested:
... u = t, (1, 2, 3, 4, 5)
>>> u
((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))
Khi xuất ra, tuple luôn luôn được kèm giữa hai dấu ngoặc nhằm để cho các
tuple lồng nhau có thể được thông dịch chính xác; chúng có thể được nhập vào
với ngoặc hoặc không, mặc dù thông thường chúng ta vẫn cần các dấu ngoặc
(nếu tuple là một phần của một biểu thức lớn hơn).
Tuple được dùng nhiều. Ví dụ: cặp tọa độ (x, y), bản ghi nhân viên từ cơ sở dữ
liệu, v.v... Giống như chuỗi, tuple không thể bị thay đổi: không thể gán giá trị
mới cho từng phần tử của tuple (mặc dù bạn có thể đạt được cùng kết quả với
cắt miếng và ghép dãy). Cũng có thể tạo tuple chứa các đối tượng khả biến ví dụ
như danh sách.
Vấn đề đặc biệt là trong việc tạo nên tuple chứa 0 hoặc một phần tử: cú pháp
ngôn ngữ có một vài điểm riêng để thực hiện việc này. Tuple rỗng được tạo nên
bởi một cặp ngoặc rỗng; tuple một phần tử được tạo bởi một giá trị theo sau bởi
một dấu phẩy (việc cho giá trị đơn lẻ vào trong ngoặc không đủ để tạo tuple).
Xấu, nhưng hiệu quả. Ví dụ:
>>> empty = ()
>>> singleton = 'hello', # <-- note trailing comma
>>> len(empty)
0
>>> len(singleton)
1
>>> singleton
('hello',)
Câu lệnh t = 12345, 54321, 'hello!' là một ví dụ của việc đóng gói tuple
(tuple packing): các giá trị 12345, 54321 và 'hello!' được gói lại vào trong
một tuple. Và quá trình ngược:
>>> x, y, z = t
6 of 11 08/31/2011 07:39 AM