gpt4 book ai didi

python - 部分应用列表理解

转载 作者:太空宇宙 更新时间:2023-11-04 08:09:52 27 4
gpt4 key购买 nike

我开始学习 Haskell,事实证明,在那里,您可以使列表理解成为部分应用的函数。换句话说,它返回一个接受列表的函数,然后在列表上运行列表推导。

例子:

boomBangs xs = [ if x < 10 then "BOOM!" else "BANG!" | x <- xs, odd x]

boomBangs can then be called with the actual "xs" argument.

我的问题:有没有办法在 Python 中做到这一点?我四处搜索但找不到方法,但我可能遗漏了一些东西。

如果能够做到这一点将非常有值(value)。

编辑:

我的意思似乎有些困惑。

我希望能够定义列表理解而不必给它要处理的列表直到稍后。

这个想法是,列表理解有效地变成了一个接受一个参数的函数,即要处理的列表。

例如我可以这样做:

my_new_func = [x*2 for x in l] # l is **not defined**

然后在代码后面的某处:

my_new_func(range(10)) # Returns the answer

这是一种非常好的函数式编程方式。

第二次编辑:

这里有一种方法可以做我想做的事,但我想知道是否有更好的方法:

boomBangs = lambda lst: [actual list comprehension]

boomBangs(range(10))

最佳答案

特别之处不是列表理解,而是函数定义。碰巧该函数返回一个列表。因此,只需将其定义为 Python 中的普通函数即可。

boomBangs = lambda xs: ["BOOM!" if x < 10 else "BANG!" for x in xs if odd(x)]

def boomBang(xs):
return ["BOOM!" if x < 10 else "BANG!" for x in xs if odd(x)]

如果您需要它变得懒惰,请改用 genex。

boomBangs = lambda xs: ("BOOM!" if x < 10 else "BANG!" for x in xs if odd(x))

def boomBang(xs):
return ("BOOM!" if x < 10 else "BANG!" for x in xs if odd(x))

关于python - 部分应用列表理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24710311/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com