我有:
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']
答案 0 :(得分:5)
answer = [[item for sublist in mylist for item in sublist[i]] for i in range(2)]
只需要遍历您的子列表即可:)
答案 1 :(得分:3)
这是使用zip
和itertools.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])