Python 迭代列表,而不是返回子列表中的所有项

Python 迭代列表,而不是返回子列表中的所有项,python,iterator,Python,Iterator,我知道我已经看到了正确方法的清晰示例,甚至可以发誓它是在一个标准python库中。我现在好像找不到。你能给我指一下正确的方向吗 仅从子列表返回任意值的列表列表的迭代器。我们的想法是把它放在一个列表中 alist = [ [1,2,3,4,5], [2,4,6,8,10], [3,6,9,12,15] ] only_some_values = [list(x[2]]) for x in alist] [[3],[6],[9]]

我知道我已经看到了正确方法的清晰示例,甚至可以发誓它是在一个标准python库中。我现在好像找不到。你能给我指一下正确的方向吗

仅从子列表返回任意值的列表列表的迭代器。我们的想法是把它放在一个列表中

alist = [    [1,2,3,4,5],
             [2,4,6,8,10],
             [3,6,9,12,15]    ]

only_some_values = [list(x[2]]) for x in alist]

[[3],[6],[9]]

但是我很确定有一个函数可以做同样的事情,但是是以迭代器的方式,这样就不用在左侧直接访问索引,而是在
的右侧为
链接一个额外的迭代器。也许这是嵌入式列表理解的一种形式,但我真的认为有一种更简洁的方法(可能使用imap?)

也许你在想
itemgetter

>>> from operator import itemgetter
>>> map(itemgetter(2), alist)
[3, 6, 9]
但这并没有将元素保留在子列表中

only_some_values = [[x[2]] for x in alist]

提供所需的输出

以下是我的想法:

from operator import itemgetter

alist = [    [1,2,3,4,5],
             [2,4,6,8,10],
             [3,6,9,12,15]    ]

[list(x) for x in zip(map(itemgetter(2),alist),
                      map(itemgetter(0),alist))    ]

[[3,1], [6,2], [9,3]]
这样做的目的是让理解的左侧保持干净,可能会用另一个重要的调用替换
list(x)
,因此很容易阅读第一级列表元素的来源


我仍然不确定这是从哪里得到的,但它肯定不是我的原创想法。

是您的预期输出吗?

是的,外部列表需要包含列表(无论如何,对于我的应用程序)