首页 > 解决方案 > 列表理解从每个元组中获取多个值

问题描述

假设我有一个这样的元组列表:

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 不喜欢在列表推导中解包。

标签: pythonpython-3.x

解决方案


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

[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

推荐阅读