Unpack tuple và list trong Python


Ta có một tuple sau.

my_tuple = (1,2)

Ta muốn lấy ra 1 gán vào 1 biến và lấy ra 2 gán vào một biến khác. Ta dùng unpack.

(x, y) = (1, 2)
print(x)  # 1
print(y)  # 2

Ta nhớ các phần tử phải tương ứng bằng nhau. Nếu ta có 2 phần tử là 1 và 2 thì ta phải có 2 biến là x và y để gán nhé. Nếu thiếu biến sẽ báo lỗi.

Ngoài ra ta cũng có thể bỏ dấu ngoặc đi cũng được.

x, y = (1, 2)
print(x)  # 1
print(y)  # 2

Nếu muốn bỏ qua một số phần tử nào đó của tuple ta dùng cách sau.

x, _, _, y = (1, 2, 3, 4)

print(x)  # 1
print(y)  # 4

Ta bỏ qua 3 và 4. Còn nếu nhiều phần tử cần bỏ qua ta dùng cách sau sẽ dễ hơn.

x, *_, y = (1, 2, 3, 4)

print(x)  # 1
print(y)  # 4

Còn nếu muốn lấy ra phần tử đầu tiên, còn phần còn lại ta gán vào 1 biến khác.

x, *y = (1, 2, 3, 4)

print(x)  # 1
print(y)  # [2, 3, 4]

Giống như tuple ta cũng có thể unpack một list.

(x, y) = [1, 2]
print(x)  # 1
print(y)  # 2

Hoặc

x, y = [1, 2]
print(x)  # 1
print(y)  # 2

Ta xem thêm một số ví dụ.

name, age, _, phone = ['Duy', 35, 'Freelancer', '192399443']

print(name)  # Duy
print(age)  # 35
print(phone)  # 192399443

first, *rest = [1, 2, 3, 4]
print(first)  # 1
print(rest)  # [2,3,4]

name, *_, phone = ['Trang', 26, 'Chef', '12434344']
print(name)  # Trang
print(phone)  # 12434344

Còn nếu ta unpack một list chỉ có 1 phần tử thì sao.

name, age = ["Duy"]

Kết quả là sẽ báo lỗi.

Còn nếu ta code như sau thì không xảy ra lỗi.

name, *age = ["Duy"]

print(name) # Duy
print(age)  # []

age lúc này là 1 list rỗng.

Như vậy ta đã tìm hiểu xong unpack cho tuple và list rồi nhé. ^_^