12、Clojure 中的序列处理:map、filter 及相关函数的使用

Clojure 中的序列处理:map、filter 及相关函数的使用

1. filter 函数

filter 函数与 map 函数有所不同,它常常产生比输入序列元素更少的结果序列。调用 filter 的方式与 map 类似:

user> (filter keyword? ["a" :b "c" :d "e" :f "g"])
(:b :d :f)

和 map 一样,filter 的第一个参数是一个函数,该函数会作用于序列中的每个元素。不同的是,这里的函数作为一个谓词使用,我们只关心其返回值在逻辑上是真还是假。当返回真值时,该元素会被包含在结果序列中。

与 map 的一个关键区别是,filter 的谓词仅用于决定某个元素是否应被包含,而不会以任何方式改变元素。filter 的结果集始终是输入集的子集。

练习 4.02:开始使用 filter

以下是使用 filter 处理整数列表以获得不同结果的步骤:
1. odd? 函数是一个谓词,如果数字为奇数则返回 true。在 REPL 中单独测试它:

user> (odd? 5)
true
  1. 传入一个偶数作为输入:
user> (odd? 6)
false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值