Skip to main content

Bài 7 - Tuple trong Python

I. Giới thiệu về Tuple trong Python

Phát âm tiếng anh /ˈtuːpəl/

Tuple là một kiểu dữ liệu dạng chuỗi (sequence) trong Python, tương tự như List nhưng có những đặc điểm riêng biệt quan trọng.

Đặc điểm nổi bật của Tuple

  • Bất biến (Immutable): Không thể thay đổi sau khi tạo
  • Chứa được mọi kiểu dữ liệu
  • Tốc độ truy cập nhanh hơn List
  • Dùng làm khóa (key) cho Dictionary

II. Cách tạo Tuple

1. Tạo tuple cơ bản

# Cách 1: Dùng dấu ngoặc tròn
tup1 = (1, 2, 3, 'a', 'b')

# Cách 2: Không cần ngoặc (tuple packing)
tup2 = 4, 5, 6

# Tuple rỗng
empty_tup = ()

# Tuple có 1 phần tử (cần dấu phẩy)
single_tup = (7,)  # Không nhầm với (7)

2. Tạo tuple từ các cấu trúc khác

# Từ list
lst = [1, 2, 3]
tup_from_list = tuple(lst)

# Từ chuỗi
s = "hello"
tup_from_str = tuple(s)  # ('h', 'e', 'l', 'l', 'o')

III. Các thao tác với Tuple

1. Truy cập phần tử

my_tuple = (10, 20, 30, 40, 50)

# Truy cập bằng chỉ số (index) bắt đầu từ 0
print(my_tuple[0])  # 10
print(my_tuple[-1])  # 50 (phần tử cuối)

print(my_tuple[4])  # 50 (phần tử cuối)

# Cắt lát (slicing)
print(my_tuple[1:4])  # (20, 30, 40)

2. Tuple không thể thay đổi

tup = (1, 2, 3)
tup[0] = 10  # ❌ Lỗi: 'tuple' object does not support item assignment

3. Các phương thức cơ bản

t = ('a', 'b', 'c', 'a')

# Đếm số lần xuất hiện
print(t.count('a'))  # 2

# Tìm vị trí đầu tiên
print(t.index('b'))  # 1

4. Nối tuple (Tuple Addition)

Kết hợp hai tuple để tạo nên một tuple mới. + thực hiện nối chuỗi các tuples.

t1 = (1, 2)
t2 = (3, 4)
new_tup = t1 + t2  # (1, 2, 3, 4)

5. Nhân bản tuple (Tuple Multiplication)

t1 = (1, 2)
t2 = t1*2

print(t2) # (1, 2, 1, 2)

6. Duyệt tuple

for item in my_tuple:
   print(item)

IV. Ứng dụng thực tế của Tuple

1. Trả về nhiều giá trị từ hàm

def get_user_info():
   return "Alice", 25, "[email protected]"

name, age, email = get_user_info()  # Tuple unpacking

Sử dụng trong Odoo khi định nghĩa trường (field) Selection, trường này hiển thị danh sách lựa chọn định sẵn cho người dùng dưới dạng dropdown. Các tùy chọn được định nghĩa bằng danh sách các tuple, trong đó mỗi tuple con gồm 2 phần tử: Giá trị kỹ thuật (technical value) lưu trong database và nhãn hiển thị (human-readable label) - hiển thị cho người dùng.

class MyModel(models.Model):
    _name = 'my.model'

    state = fields.Selection([
        ('draft', 'Draft'),
        ('open', 'Open'),
        ('done', 'Done'),
    ], string='Status', default='draft')

Giải thích: ('draft', 'Draft') là một tuple con trong list, draft là gía trị kỹ thuật còn Draftlà nhãn hiển thị. 

2. Dùng làm key trong dictionary

locations = {
   (35.6895, 139.6917): "Tokyo",
   (40.7128, 74.0060): "New York"
}

3. Bảo vệ dữ liệu không bị thay đổi

CONSTANTS = (3.14, 2.718, 1.618)  # Các hằng số toán học

V. So sánh Tuple và List

Đặc điểmTupleList
Khả năng thay đổiImmutableMutable
Tốc độ truy cậpNhanh hơnChậm hơn
Bộ nhớTiết kiệm hơnTốn hơn
Phương thứcÍt phương thứcNhiều phương thức
Sử dụngDữ liệu cố địnhDữ liệu thay đổi

VI. Bài tập thực hành

Bài 1: Đảo ngược tuple

tup = (1, 2, 3, 4, 5)
reversed_tup = tup[::-1]  # (5, 4, 3, 2, 1)

Bài 2: Tìm phần tử xuất hiện nhiều nhất

from collections import Counter
t = ('a', 'b', 'a', 'c', 'b', 'a')
most_common = Counter(t).most_common(1)[0][0]  # 'a'

Bài 3: Chuyển đổi giữa tuple và list

lst = [1, 2, 3]
tup = tuple(lst)  # (1, 2, 3)
new_lst = list(tup)  # [1, 2, 3]

VII. Tổng kết

  • Tuple là kiểu dữ liệu bất biến, hiệu quả khi cần lưu trữ dữ liệu cố định
  • Thích hợp cho: khóa dictionary, trả về nhiều giá trị từ hàm, lưu dữ liệu không đổi
  • Ưu điểm: tốc độ truy cập nhanh, an toàn dữ liệu
    Tuple là công cụ mạnh mẽ giúp code Python tối ưuan toàn hơn! 🚀