Chúng ta có thể bắt gặp một danh sách có các phần tử là các bộ giá trị. Nhưng để xử lý dữ liệu thêm, chúng ta có thể cần chuyển đổi các bộ giá trị thành các phần tử bình thường của một danh sách. Trong bài viết này, chúng ta sẽ xem các cách tiếp cận để đạt được điều này.
Với khả năng hiểu danh sách
Trong cách tiếp cận này, chúng tôi thiết kế các vòng lặp for lồng nhau để lặp lại qua từng tuple và tạo ra danh sách cuối cùng của các phần tử.
Ví dụ
listA = [('Mon', 3), ('Wed', 4), ('Fri', 7, 'pm')] # Given list print("Given list : \n", listA) res = [item for t in listA for item in t] # Result print("Final list: \n",res)
Đầu ra
Chạy đoạn mã trên cho chúng ta kết quả sau -
Given list : [('Mon', 3), ('Wed', 4), ('Fri', 7, 'pm')] Final list: ['Mon', 3, 'Wed', 4, 'Fri', 7, 'pm']
Với itertools
Chúng ta cũng có thể sử dụng phương thức itertools.chain cùng với toán tử *, phương thức này sẽ tìm nạp từng phần tử trong danh sách các bộ giá trị và sau đó kết hợp chúng thành một chuỗi các phần tử cho danh sách.
Ví dụ
import itertools listA = [('Mon', 3), ('Wed', 4), ('Fri', 7, 'pm')] # Given list print("Given list : \n", listA) res = list(itertools.chain(*listA)) # Result print("Final list: \n",res)
Đầu ra
Chạy đoạn mã trên cho chúng ta kết quả sau -
Given list : [('Mon', 3), ('Wed', 4), ('Fri', 7, 'pm')] Final list: ['Mon', 3, 'Wed', 4, 'Fri', 7, 'pm']
Với rút gọn và kết hợp
Hàm Reduce được sử dụng để áp dụng hàm concat cho từng phần tử trong danh sách, cuối cùng tạo ra danh sách tất cả các phần tử từ danh sách ban đầu.
Ví dụ
import operator from functools import reduce listA = [('Mon', 3), ('Wed', 4), ('Fri', 7, 'pm')] # Given list print("Given list : \n", listA) res = (list(reduce(operator.concat, listA))) # Result print("Final list: \n",res)
Đầu ra
Chạy đoạn mã trên cho chúng ta kết quả sau -
Given list : [('Mon', 3), ('Wed', 4), ('Fri', 7, 'pm')] Final list: ['Mon', 3, 'Wed', 4, 'Fri', 7, 'pm']