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 Draft
là 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ểm | Tuple | List |
---|---|---|
Khả năng thay đổi | Immutable | Mutable |
Tốc độ truy cập | Nhanh hơn | Chậm hơn |
Bộ nhớ | Tiết kiệm hơn | Tốn hơn |
Phương thức | Ít phương thức | Nhiều phương thức |
Sử dụng | Dữ liệu cố định | Dữ 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 ưu và an toàn hơn! 🚀