在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