如何在列表理解中定义变量?

2024-04-26 02:21:59 发布

您现在位置:Python中文网/ 问答频道 /正文

在哈斯凯尔,我可以

Prelude> [(y*3, y+4) | x<-[0..5], let y=x^2]
[(0,4),(3,5),(12,8),(27,13),(48,20),(75,29)]

在Python中,没有重复power操作的等价物是什么呢

^{pr2}$

当然,我可以用lambda来模拟Haskell代码,但这感觉不太像Python。。。在

>>> [(lambda y: (y*3, y+4))(x**2) for x in range(5)]

Tags: lambda代码inforhaskellrangepowerlet
3条回答

你不能那样做。赋值总是Python中的一个语句;列表理解只能包含表达式。在

怎么样:

>>> [(x*3, x + 4) for x in map(lambda y: y**2, range(5))]
[(0, 4), (3, 5), (12, 8), (27, 13), (48, 20)]

您不能在理解中指定变量,但可以使用嵌套的生成器表达式,它可以实现我认为您想要的(没有lambda函数)。在

[(y*3, y+4) for y in (x**2 for x in range(5))]

相关问题 更多 >