加入列表中的元组

问题描述 投票:1回答:3

我有:

mylist = [(['a', 'b'], [1, 2]), (['c', 'd'], [3])]

我需要一个带字母的列表和一个带有数字的列表,如下所示:

(['a', 'b', 'c', 'd'], [1, 2, 3])

我已经做了一些努力,但我可以得到一个带有字母的列表,而不是两个:

answer = [item for sublist in mylist for item in sublist[0]]
#returns ['a', 'b', 'c', 'd']
python python-3.x
3个回答
5
投票

answer = [[item for sublist in mylist for item in sublist[i]] for i in range(2)]

只需要遍历你的子列表:)


3
投票

这是使用zipitertools.chain的简单替代方案:

from itertools import chain
[list(chain.from_iterable(i)) for i in zip(*mylist)]
# [['a', 'b', 'c', 'd'], [1, 2, 3]]

2
投票

zip也有效:

tuple(map(lambda x: x[0]+x[1],  zip(mylist[0], mylist[1])))

码:

mylist = [(['a', 'b'], [1, 2]), (['c', 'd'], [3])]

print(tuple(map(lambda x: x[0]+x[1],  zip(mylist[0], mylist[1]))))
# (['a', 'b', 'c', 'd'], [1, 2, 3])
© www.soinside.com 2019 - 2024. All rights reserved.