1

我对 python 很陌生,我一直在学习 python 列表和字典的列表理解。

所以,我想做类似的事情:

[my_functiona(x) for x in a]

..它工作得很好。

但是,现在我想做以下事情:

[my_functiona(x) for x in a] && [my_functionb(x) for x in a]

..有没有办法组合或链接这样的列表理解?- 第二个函数使用第一个列表的结果。S简而言之,我想申请my_functionamy_functionb依次列出a

我确实尝试过用谷歌搜索 - 但找不到任何令人满意的东西。对不起,如果这是一个愚蠢的 101 问题!

4

3 回答 3

6

您只需迭代第一个理解的结果:

def double(x):
    return x*2
def inc(x):
    return x+1

[double(x) for x in (inc(y) for y in range(10))]

我将内部理解设为生成器表达式,因为您不需要获取完整列表。

于 2013-05-20T15:57:50.493 回答
6

您可以像这样编写函数

[my_functionb(my_functiona(x)) for x in a]

如果您需要应用条件,Thomas 的答案中的表格很有用

[my_functionb(y) for y in (my_functiona(x) for x in a) if y<10]
于 2013-05-20T16:00:16.413 回答
1
[my_functiona(my_functionb(x)) for x in a]
于 2013-05-20T16:03:23.537 回答