簡體   English   中英

等效於 Python 中的 Haskell 列表理解示例

[英]Equivalent of Haskell List comprehension example in Python

我想知道 learnyouahaskell.com 中的以下List comprehension示例是否可以在PythonPython

[ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM