在列表中加入元组

时间:2019-04-27 13:47:17

标签: python python-3.x

我有:

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

3 个答案:

答案 0 :(得分:5)

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

只需要遍历您的子列表即可:)

答案 1 :(得分: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 :(得分: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])