Travel With Haskell 3 — 列表推导式

本文介绍Haskell中的列表推导式,一种类似于数学集合描述的方法,用于从列表中筛选符合条件的元素。通过几个实例展示了如何使用列表推导式进行数值筛选及组合运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Travel With Haskell 3 - 列表推导式

什么是列表推导式

Haskell 列表推导式与Python十分的相似,可以理解为从列表元素中筛选(过滤)出符合条件的值。

格式

在Haskell中,列表推导式大概长这个样子:

[x|description][x|description]

乍一看以为是数学集合的描述法,其实真的长得差不多。准确来说,后面的一部分应该叫做predicate(限制条件)。

比方说想要从1-10中筛选出偶数,可以这样写

[x|x<-[1..10], x `mod` 2 == 0]

再比如说我们想要从1-100中筛选出 所有模13余2的数字

[x|x<-[1..100], x `mod` 13 == 2]

再比如说我们想要获得x = {1,2,3}, y = {7,8,9} 两个集合的笛卡尔积。

[x*y|x<-[1..3], y<-[7..9]]

是不是感觉和集合的描述没什么区别。

前面的是代表元素,后面的是元素的限制。当然,列表推导式也可以对字符进行操作。看下面的一个小栗子。

> bb x = [if x < 10 then "hhh" else "NONONO" | x<- x]
> bb [1,2,3,45]
["hhh","hhh","hhh","NONONO"]

首先声明了一个函数叫做bb,他的参数是x,后面是一个列表推导式,当且仅当x小于时的时候,将该元素变为”hhh”,否则为“NONONO”。

你可能注意到了,这里x是由二义性的,为了避免这个问题,我们最好不要这样使用。

未完待续…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值