Chúng ta có thể gặp danh sách các phần tử là tuple. Cần chuyển tuple thành các phần tử bình thường của list. Bài viết trình bày các cách thực hiện.
Sử dụng list comprehension
Thiết kế vòng lặp lồng nhau để lặp qua từng tuple và tạo list phẳng cuối cùng.
Ví dụ
listA = [('Mon', 3), ('Wed', 4), ('Fri', 7, 'pm')] # Danh sách cho trước
print("Given list : \n", listA)
res = [item for t in listA for item in t] # Kết quả
print("Final list: \n", res)
Kết quả
Chạy đoạn mã trên cho kết quả sau:
Given list : [('Mon', 3), ('Wed', 4), ('Fri', 7, 'pm')] Final list: ['Mon', 3, 'Wed', 4, 'Fri', 7, 'pm']
Sử dụng itertools.chain
Dùng itertools.chain cùng toán tử * để lấy từng phần tử trong list of tuples và gộp thành chuỗi phần tử cho list.
Ví dụ
import itertools
listA = [('Mon', 3), ('Wed', 4), ('Fri', 7, 'pm')] # Danh sách cho trước
print("Given list : \n", listA)
res = list(itertools.chain(*listA)) # Kết quả
print("Final list: \n", res)
Kết quả
Chạy đoạn mã trên cho kết quả sau:
Given list : [('Mon', 3), ('Wed', 4), ('Fri', 7, 'pm')] Final list: ['Mon', 3, 'Wed', 4, 'Fri', 7, 'pm']
Sử dụng reduce và concat
Hàm reduce áp dụng hàm concat cho từng phần tử list, tạo ra list tất cả phần tử từ list gốc.
Ví dụ
import operator
from functools import reduce
listA = [('Mon', 3), ('Wed', 4), ('Fri', 7, 'pm')] # Danh sách cho trước
print("Given list : \n", listA)
res = list(reduce(operator.concat, listA)) # Kết quả
print("Final list: \n", res)
Kết quả
Chạy đoạn mã trên cho kết quả sau:
Given list : [('Mon', 3), ('Wed', 4), ('Fri', 7, 'pm')] Final list: ['Mon', 3, 'Wed', 4, 'Fri', 7, 'pm']