让我们说我有一个这样的元组列表:
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不喜欢在列表推导中解包。
答案 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]