在Haskell,我可以做如何在列表理解中定义一个变量?
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中的等价物,但不重复功率运行,因为我需要在
>>> [((x**2)*3, (x**2)+4) for x in range(5)]
[(0, 4), (3, 5), (12, 8), (27, 13), (48, 20)]
我当然可以效仿的Haskell代码以拉姆达,但那并不觉得Pythonic ...
>>> [(lambda y: (y*3, y+4))(x**2) for x in range(5)]
简而言之:用嵌套的发生器。 '(a * 3,a + 4)for a(x ** 2 for x in range(5)]' – TigerhawkT3