[英]Equivalent of Haskell List comprehension example in Python
我想知道 learnyouahaskell.com 中的以下List comprehension
示例是否可以在Python中Python
:
[ if x < 10 then "BOOM!" else "BANG!" | x <- xs, odd x]
我尝试过这样的事情,但无法在 Python 的 List Comprehension 中获得与else
路径等效的方法:
["BOOM!" for x in range(7,13) if x < 10] # else "BANG!"
这不是过滤,而是您放入列表推导的yield部分的三元运算符。 但是有一个过滤器: odd x
部分,因此您应该在列表理解的末尾添加一个过滤器if x % 2 == 1
:
["BOOM!" if x < 10 else "BANG!" for x in range(7,13) if x % 2 == 1]
在 Python 中,这给了我们:
>>> ["BOOM!" if x < 10 else "BANG!" for x in range(7,13) if x % 2 == 1]
['BOOM!', 'BOOM!', 'BANG!']
在 Haskell 中等效:
Prelude> [ if x < 10 then "BOOM!" else "BANG!" | x <- [7 .. 12], odd x]
["BOOM!","BOOM!","BANG!"]
您可以将 if-else 作为理解评估的表达式
['BOOM!' if x < 10 else 'BANG!' for x in range(7, 13)]
像这样移动它:
["BOOM!" if x < 10 else "BANG!" for x in range(7,13) ]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.