Tuple trong Python



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:

STTHà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.

  • Các tuple được sử dụng để định dạng String.