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_functiona并 my_functionb随后列出a
我确实尝试使用谷歌搜索 - 但找不到任何令人满意的东西.对不起,如果这是一个愚蠢的101问题!
你可以编写这样的函数
[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)
你只需迭代第一次理解的结果:
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)
我将内部理解作为生成器表达式,因为您不需要获取完整列表.