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é. ^_^