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:

1. cmp(tuple1, tuple2)
So sánh hai tuple với nhau

Cú pháp

Cú pháp của cmp() trong Python:

cmp(tuple1, tuple2)

Chi tiết về tham số:

  • tuple1 -- Đây là Tuple đầu tiên để được so sánh.
  • tuple2 -- Đây là Tuple thứ hai để được so sánh.

Trả về giá trị

Nếu các phần tử là cùng kiểu, thực hiện so sánh và trả về giá trị. Nếu các phần tử là khác kiểu, kiểm tra xem chúng có là số hay không.

  • Nếu là các số thì thực hiện phép so sánh.
  • Nếu một trong các phần tử là số, thì phần tử khác là "lớn hơn" (các số là "nhỏ hơn").
  • Nếu không, các kiểu được xếp theo thứ tự chữ cái.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của cmp() trong Python.

tuple1, tuple2 = (123, 'xyz'), (456, 'abc')

 

print cmp(tuple1, tuple2)

print cmp(tuple2, tuple1)

tuple3 = tuple2 + (786,);

print cmp(tuple2, tuple3)

Chạy chương trình Python trên sẽ cho kết quả −

-1

1

-1

2. len(tuple)
Trả về độ dài của tuple

Cú pháp

Cú pháp của len() trong Python:

len(tuple)

Chi tiết về tham số:

  • tuple -- Đây là một Tuple.

Trả về giá trị

Phương thức này trả về số phần tử trong Tuple.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của len() trong Python.

tuple1, tuple2 = (123, 'xyz', 'hoang'), (456, 'abc')

 

print "Tuple thu nhat co do dai la : ", len(tuple1)

print "Tuple thu hai co do dai la : ", len(tuple2)

Chạy chương trình Python trên sẽ cho kết quả −

Tuple thu nhat co do dai la :  3

Tuple thu hai co do dai la :  2

3. max(tuple)
Trả về item có giá trị lớn nhất từ một tuple đã cho

Cú pháp

Cú pháp của max() trong Python:

max(tuple)

Chi tiết về tham số:

  • tuple -- Đây là một Tuple.

Trả về giá trị

Trả về item có giá trị lớn nhất từ một tuple đã cho.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của max() trong Python.

tuple1, tuple2 = (123, 'xyz', 'hoang', 'abc'), (456, 700, 200)

 

print "Phan tu co gia tri lon nhat : ", max(tuple1)

print "Phan tu co gia tri lon nhat : ", max(tuple2)

Chạy chương trình Python trên sẽ cho kết quả −

Phan tu co gia tri lon nhat :  xyz

Phan tu co gia tri lon nhat :  700

4. min(tuple)
Trả về item có giá trị nhỏ nhất từ một tuple đã cho

Cú pháp

Cú pháp của min() trong Python:

min(tuple)

Chi tiết về tham số:

  • tuple -- Đây là một Tuple.

Trả về giá trị

Trả về item có giá trị nhỏ nhất từ một tuple đã cho.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của min() trong Python.

tuple1, tuple2 = (123, 'xyz', 'hoang', 'abc'), (456, 700, 200)

 

print "Phan tu co gia tri nho nhat la : ", min(tuple1)

print "Phan tu co gia tri nho nhat la : ", min(tuple2)

Chạy chương trình Python trên sẽ cho kết quả −

Phan tu co gia tri nho nhat la :  123

Phan tu co gia tri nho nhat la :  200

5. tuple( seq )
Chuyển đổi một dãy thành tuple

Cú pháp

Cú pháp của tuple() trong Python:

tuple( seq )

Chi tiết về tham số:

  • seq -- Đây là dãy các phần tử để được chuyển đổi thành tuple.

Trả về giá trị

Phương thức này trả về Tuple.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của tuple() trong Python.

aList = (123, 'xyz', 'hoang', 'abc');

aTuple = tuple(aList)

 

print "Cac phan tu cua Tuple : ", aTuple

Chạy chương trình Python trên sẽ cho kết quả −

Cac phan tu cua Tuple :  (123, 'xyz', 'hoang', 'abc')

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.