1. Giả nén một Tuple trong Python

Tuple trong Python được sử dụng để lưu trữ các đối tượng bất biến.Tuple cho phép các giá trị là bất biến có nghĩa là chúng không thể được sửa đổi trong toàn bộ chương trình.

Trong Python, có một tính năng gán Tuple rất mạnh mẽ, đó là việc gán giá trị bên phải thành bên trái. Theo một cách khác, nó được gọi là giải nén một bộ giá trị trong Tuple (bên phải) vào một biến (bên trái).

Ví dụ dưới đây, tạo ra một Tuple và giải nén các giá trị vào các biến thông qua toán tử gán bằng “=” như sau:

# Khai bao tuple gom 3 phan tu
tupleA = ("oto", "xe may", "may bay")

# Giai nen tupleA gom 3 gia tri ra 3 bien
(den, trang, xanh) = tupleA

# Hien thi cac bien
print(den)
print(trang)
print(xanh)

Kết quả:

oto
xe may
may bay

Chú ý: Số lượng biến (bên trái) phải khớp với số lượng giá trị trong Tuple (bên phải), nếu không, bạn phải sử dụng dấu hoa thị để gán các giá trị còn lại dưới dạng List.

2. Giải nén Tuple bằng dấu hoa thị trong Python

Trong trường hợp, nếu số biến ít hơn số lượng giá trị có trong Tuple, bạn có thể thêm dấu sao  “*” vào tên biến và các giá trị sẽ được gán cho biến dưới dạng List.

Ví dụ dưới đây, sử dụng dấu sao “*” để gán các giá trị còn lại trong Tuple dưới dạng một List vào biến “xanh” như sau:

# Khai bao tuple gom cac phan tu trung lap
tupleA = ["oto", "xe may", "may bay", "xe may", "may bay", "xe may"]

# Giai nen tupleA gom 3 gia tri ra 3 bien
(den, trang, *xanh) = tupleA

# Hien thi cac bien
print(den)
print(trang)
print(xanh)

Kết quả:

oto
xe may
[‘may bay’, ‘xe may’, ‘may bay’, ‘xe may’]

Nếu dấu sao “*” được thêm vào tên biến khác với biến cuối cùng (bên trái), Python sẽ gán giá trị là một List cho biến này cho đến khi số giá trị còn lại khớp với số biến còn lại trong Tuple (bên phải).

# Khai bao tuple gom cac phan tu trung lap
tupleA = ["oto", "xe may", "may bay", "xe may", "may bay", "xe may"]

# Giai nen tupleA gom 3 gia tri ra 3 bien
(den, *trang, xanh) = tupleA

# Hien thi cac bien
print(den)
print(trang)
print(xanh)

Kết quả:

oto
[‘xe may’, ‘may bay’, ‘xe may’, ‘may bay’]
xe may