Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

แปลงลิสต์ของ tuples เป็นลิสต์แบนใน Python

ได้ลิสต์ที่สมาชิกเป็น tuples ต้องการแปลงเป็นลิสต์แบน (flat list) ที่รวมสมาชิกทุกตัว

ใช้ List Comprehension

ใช้ nested for loops ใน list comprehension

ตัวอย่าง

listA = [('Mon', 3), ('Wed', 4), ('Fri', 7, 'pm')]
print("Given list : \n", listA)
res = [item for t in listA for item in t]
print("Final list: \n", res)

ผลลัพธ์

Given list : [('Mon', 3), ('Wed', 4), ('Fri', 7, 'pm')]
Final list: ['Mon', 3, 'Wed', 4, 'Fri', 7, 'pm']

ใช้ itertools.chain

itertools.chain(*listA) รวม iterator จากทุก tuple แล้วแปลงเป็นลิสต์

ตัวอย่าง

import itertools
listA = [('Mon', 3), ('Wed', 4), ('Fri', 7, 'pm')]
print("Given list : \n", listA)
res = list(itertools.chain(*listA))
print("Final list: \n", res)

ผลลัพธ์

Given list : [('Mon', 3), ('Wed', 4), ('Fri', 7, 'pm')]
Final list: ['Mon', 3, 'Wed', 4, 'Fri', 7, 'pm']

ใช้ reduce และ operator.concat

reduce(operator.concat, listA) รวม tuples ทั้งหมด

ตัวอย่าง

import operator
from functools import reduce
listA = [('Mon', 3), ('Wed', 4), ('Fri', 7, 'pm')]
print("Given list : \n", listA)
res = list(reduce(operator.concat, listA))
print("Final list: \n", res)

ผลลัพธ์

Given list : [('Mon', 3), ('Wed', 4), ('Fri', 7, 'pm')]
Final list: ['Mon', 3, 'Wed', 4, 'Fri', 7, 'pm']