python"多个"组合/链表理解

Joh*_*hnJ 1 python python-itertools python-2.7

我是python的新手,我一直在学习列表理解以及python列表和字典.

所以,我想做的事情如下:

[my_functiona(x) for x in a]
Run Code Online (Sandbox Code Playgroud)

..哪个工作完全正常.

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

[my_functiona(x) for x in a] && [my_functionb(x) for x in a]
Run Code Online (Sandbox Code Playgroud)

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

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

Joh*_*ooy 6

你可以编写这样的函数

[my_functionb(my_functiona(x)) for x in a]
Run Code Online (Sandbox Code Playgroud)

如果您需要申请条件,托马斯答案中的表格很有用

[my_functionb(y) for y in (my_functiona(x) for x in a) if y<10]
Run Code Online (Sandbox Code Playgroud)


Tho*_*nzl 5

你只需迭代第一次理解的结果:

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

[double(x) for x in (inc(y) for y in range(10))]
Run Code Online (Sandbox Code Playgroud)

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