5 回答

TA貢獻1744條經驗 獲得超4個贊
您的方法非常接近,但您需要先展平:
from itertools import chain
my_list = [[(12, 1), (10, 3), (4, 0), (2, 0)], [(110, 1), (34, 2), (12, 1), (55, 3)]]
my_list2 , my_list3 = map(list,zip(*chain.from_iterable(my_list)))
my_list2
# [12, 10, 4, 2, 110, 34, 12, 55]
my_list3
# [1, 3, 0, 0, 1, 2, 1, 3]

TA貢獻1906條經驗 獲得超10個贊
一種不同的,簡單的方法:
my_list = [[(12, 1), (10, 3), (4, 0), (2, 0)], [(110, 1), (34, 2), (12, 1), (55, 3)]]
first = []
second = []
for inner in my_list:
for each in inner:
first.append(each[0])
second.append(each[1])
print(first) # [12, 10, 4, 2, 110, 34, 12, 55]
print(second) # [1, 3, 0, 0, 1, 2, 1, 3]

TA貢獻1794條經驗 獲得超8個贊
您可以使用列表理解 (5.1.3)。
元組的第一個數字:
my_list2 = [tuple[0] for inner in my_list for tuple in inner]
第二個元組數:
my_list3 = [tuple[1] for inner in my_list for tuple in inner]

TA貢獻1780條經驗 獲得超1個贊
一種不同的,簡單的方法:
my_list = [[(12, 1), (10, 3), (4, 0), (2, 0)], [(110, 1), (34, 2), (12, 1), (55, 3)]]
first = []
second = []
for inner in my_list:
for each in inner:
first.append(each[0])
second.append(each[1])
print(first) # [12, 10, 4, 2, 110, 34, 12, 55]
print(second) # [1, 3, 0, 0, 1, 2, 1, 3]

TA貢獻1801條經驗 獲得超8個贊
這個怎么樣?
my_list = [[(12, 1), (10, 3), (4, 0), (2, 0)], [(110, 1), (34, 2), (12, 1), (55, 3)]]
flatten = lambda l: [item for my_list in l for item in my_list]
list1, list2 = zip(*flatten(my_list))
添加回答
舉報