list删除和挑选

来源:互联网 发布:数据信息加工 编辑:程序博客网 时间:2024/06/05 17:54

clean函数用于删除符合条件的list元素,filter函数用于挑选符合条件的list元素

(clean symbol? '(1 2 d 4 f g 5 h))   → (1 2 4 5)(filter symbol? '(1 2 d 4 f g 5 h))  → (d f g h)(define (big? x) (> x 5))        → (lambda (x) (> x 5))(clean big? '(1 10 3 6 4 5 11))  → (1 3 4 5)(clean <= '(3 4 -6 0 2 -3 0))  → (3 4 2)(clean (curry match '(a *)) '((a 10) (b 5) (a 3) (c 8) (a 9)))→  ((b 5) (c 8))


clean 结合lambda以及member函数,可以先定一个list,里面包含所有要剔除的元素,然后对另一个list操作,该list中的元素只要出现在第一个list中,就一定会被剔除。

下面的a是一个字符串,先转换成list,然后用unique去掉多余的空格,只留下一个空格,最后用clean + lambda + member将最后一个空格去除。 这样string就变成了list.

> a"1 2 3 4"> (explode a)("1" " " "2" " " "3" " " "4")> (unique (explode a))("1" " " "2" "3" "4")> (clean (fn (p) (member p '(" "))) (unique (explode a)))("1" "2" "3" "4")



比如下面的代码可以用来将目录下.和..的文件删除掉:

(clean (fn (p) (member p '("." ".."))) (directory dir-path))


0 0