列出理解以从每个元组获取多个值

时间:2018-09-30 09:45:12

标签: python python-3.x

让我们说我有一个这样的元组列表:

myList = [(1,2,3), ('a','b','c'), (4,'j',9)]

我想做的是创建一个列表,其中包含每个元组的第二和第三项(而不是第一项)。

[2, 3, 'b', 'c', 'j', 9]

显然我可以这样:

result = []
for i in myList:
    result.append(i[1])
    result.append(i[2])

但是,我想知道如何在单行中使用列表理解功能。

我试图做的一件事是:

[*(i[1],i[2]) for i in myList]

但是这没有用,因为Python不喜欢在列表推导中解包。

3 个答案:

答案 0 :(得分:3)

真的可以通过列表理解做到这一点:

[item for subTuple in myList for item in subTuple[1:]]

了解:

for subTuple in myList:        # Every tuple in the list
    for item in subTuple[1:]:  # Every item starting from index 1
        item                   # the item

答案 1 :(得分:1)

您可以将chain.from_iterable用于列表理解:

from itertools import chain

myList = [(1,2,3), ('a','b','c'), (4,'j',9)]

print(list(chain.from_iterable([(y, z) for _, y, z in myList])))
# [2, 3, 'b', 'c', 'j', 9]

答案 2 :(得分:1)

尝试一下:

from itertools import chain
a = [i[1:3] for i in myList]  
list(chain(*a))

输出:[2, 3, 'b', 'c', 'j', 9]