我有:
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']
answer = [[item for sublist in mylist for item in sublist[i]] for i in range(2)]
只需要遍历你的子列表:)
这是使用zip
和itertools.chain
的简单替代方案:
from itertools import chain
[list(chain.from_iterable(i)) for i in zip(*mylist)]
# [['a', 'b', 'c', 'd'], [1, 2, 3]]
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])