Computer >> Máy Tính >  >> Lập trình >> Python

Chuyển đổi danh sách các bộ giá trị thành danh sách trong Python

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']