Một tuple là một dãy các đối tượng không thay đổi (immutable) trong Python, vì thế tuple không thể bị thay đổi. Các tuple cũng là các dãy giống như List.
Không giống List mà sử dụng các dấu ngoặc vuông, thì tuple sử dụng các dấu ngoặc đơn. Các đối tượng trong tuple được phân biệt bởi dấu phảy và được bao quanh bởi dấu ngoặc đơn ().
Giống như chỉ mục của chuỗi, chỉ mục của tuple bắt đầu từ 0.
Ví dụ:
>>> data=(10,20,'ram',56.8) >>> data2="a",10,20.9 >>> data (10, 20, 'ram', 56.8) >>> data2 ('a', 10, 20.9) >>>
Ghi chú: Nếu các dấu ngoặc đơn không được cung cấp với một dãy, thì nó được coi như là tuple.
Một tuple trống không chứa phần tử nào, ví dụ:
tup1 = ();
Với một tuple chỉ có một giá trị đơn, thì phải có một dấu phảy ở cuối, ví dụ:
tup1 = (50,);
Các tuple cũng có thể được lồng vào nhau, ví dụ:
tupl1='a','hoang',10.56 tupl2=tupl1,(10,20,30) print tupl1 print tupl2
Kết quả:
>>> ('a', 'hoang', 10.56) (('a', 'hoang', 10.56), (10, 20, 30)) >>>
Truy cập các giá trị trong tuple trong Python
Để truy cập các giá trị trong tuple, bạn sử dụng cách tương tự như khi truy cập các phần tử trong List. Ví dụ:
tup1 = ('vatly', 'hoahoc', 1997, 2000); tup2 = (1, 2, 3, 4, 5, 6, 7 ); print "tup1[0]: ", tup1[0] print "tup2[1:5]: ", tup2[1:5]
Khi code trên được thực thi sẽ cho kết quả:
tup1[0]: vatly tup2[1:5]: [2, 3, 4, 5]
Các hoạt động cơ bản trên tuple trong Python
Giống như String và List, bạn cũng có thể sử dụng toán tử nối + và toán tử lặp * với tuple. Điểm khác biệt là nó tạo ra một tuple mới, không tạo ra một chuỗi hay list.
Ví dụ cho toán tử +:
data1=(1,2,3,4) data2=('x','y','z') data3=data1+data2 print data1 print data2 print data3
Kết quả là:
>>> (1, 2, 3, 4) ('x', 'y', 'z') (1, 2, 3, 4, 'x', 'y', 'z') >>>
Ghi chú: Dãy mới được tạo là một Tuple mới.
Ví dụ cho toán tử +:
tuple1=(10,20,30); tuple2=(40,50,60); print tuple1*2 print tuple2*3
Kết quả là:
>>> (10, 20, 30, 10, 20, 30) (40, 50, 60, 40, 50, 60, 40, 50, 60) >>>
Xóa các phần tử của tuple trong Python
Xóa các phần tử đơn của tuple là điều không thể. Bạn chỉ có thể xóa toàn bộ tuple với lệnh del như ví dụ sau:
data=(10,20,'hoang',40.6,'z') print data del data #se xoa du lieu cua tuple print data #se hien thi mot error boi vi tuple da bi xoa
Code trên sẽ cho kết quả sau. Bạn chú ý rằng sẽ có một exception được tạo ra, đó là bởi vì sau khi xóa tup thì tuple này không tồn tại nữa.
>>> (10, 20, 'hoang', 40.6, 'z') Traceback (most recent call last): File "C:/Python27/t.py", line 4, in >module< print data NameError: name 'data' is not defined >>>
Cập nhật phần tử trong tuple trong Python
Các phần tử của Tuple không thể được cập nhật. Đó là bởi vì tuple là không thay đổi (immutable). Tuy nhiên, các tuple có thể được sử dụng để tạo nên một tuple mới.
Ví dụ sau sẽ tạo một exception:
data=(10,20,30) data[0]=100 print data
Khi code trên được thực thi sẽ cho kết quả:
>>> Traceback (most recent call last): File "C:/Python27/t.py", line 2, in >module< data[0]=100 TypeError: 'tuple' object does not support item assignment >>>
Ví dụ tạo một tuple mới từ các tuple đang tồn tại:
data1=(10,20,30) data2=(40,50,60) data3=data1+data2 print data3
Khi code trên được thực thi sẽ cho kết quả:
>>> (10, 20, 30, 40, 50, 60) >>>
Tập hợp đối tượng mà không có dấu giới hạn
Bất kỳ tập hợp nào gồm nhiều đối tượng, được phân biệt bởi dấu phảy, được viết mà không có các biểu tượng nhận diện (chẳng hạn như dấu ngoặc vuông cho List, dấu ngoặc đơn cho Tuple, …) thì Python mặc định chúng là Tuple. Ví dụ:
print 'abc', -4.24e93, 18+6.6j, 'xyz' x, y = 1, 2; print "Gia tri cua x , y : ", x,y
Khi code trên được thực thi sẽ cho kết quả:
abc -4.24e+93 (18+6.6j) xyz Gia tri cua x , y : 1 2
Các hàm được xây dựng sẵn cho tuple trong Python
Bảng dưới liệt kê các hàm đã được xây dựng sẵn để thao tác với Tuple trong Python, bạn theo link để tìm hiểu chi tiết:
STT | Hàm và Miêu tả |
---|---|
1 | Hàm cmp(tuple1, tuple2) So sánh hai tuple với nhau |
2 | Hàm len(tuple) Trả về độ dài của tuple |
3 | Hàm max(tuple) Trả về item có giá trị lớn nhất từ một tuple đã cho |
4 | Hàm min(tuple) Trả về item có giá trị nhỏ nhất từ một tuple đã cho |
5 | Hàm tuple(seq) Chuyển đổi một dãy thành tuple |
Tại sao chúng ta sử dụng tuple?
- Trình xử lý các tuple là nhanh hơn các List.
- Làm cho dữ liệu an toàn hơn bởi vì tuple là không thay đổi (immutable) và vì thế nó không thể bị thay đổi.