clojure 集合操作

作者: admin 日期: 2017-12-27 14:23:18 人气: - 评论: 0
Lists: conj



添加元素到列表的开头

(conj '(2 3 4) 1) 

=> '(1 2 3 4)


(conj '(3 4) 2 1)

=> '(1 2 3 4)


Vectors


把列表转换为向量

(vec '(:a :b :c))


用vector函数创建向量

(vector :a :b :c)


用中括号创建向量

[:a :b :c]


Vectors: conj
 


添加元素到向量头部

(conj [1 2 3] 4)

=> [1 2 3 4]


(conj [1 2] 3 4)

[1 2 3 4]



Sets


用特殊表创建集合

#{:c :b :d :a}


把list转换为集合

(set '(:a :a :b :c :c :c :c :d :d))

#{:c :b :d :a}


合并两个集合

(clojure.set/union #{:a :b :c} #{:b :c :d})

#{:c :b :d :a}


Sets: conj
 


添加元素到集合

(conj #{1 4 3} 2)

=> #{1 4 3 2}


Maps

使用花括号创建map

{:a 10, :b 20, :c 30}


使用hash-map操作创建map

(hash-map :a 10, :b 20, :c 30)

=> {:c 30, :b 20, :a 10}


创建的map在clojure里面其实是个函数

((hash-map :a 10, :b 20, :c 30) :b)

=> 20


创建map的时候使用的key也是一个函数

(:b {:a 10, :b 20, :c 30})


Maps: conj

 


添加键值对到map中

(conj {:a 1} [:b 2] [:c 3])

=> {:a 1, :b 2, :c 3}


Sequences
 


取第一个

(first '(3 2 1))

=> 3


取第二个

(second [2 3 4])

=> 3


取最后一个

(last (list 1 2 3))

=> 3


取除了一个以外的剩余部分


(rest [10 20 30 40])

=> (20 30 40)


Sequences: map


集合变换操作

(map #(+ % 5) '(1 2 3))

=> (6 7 8)


Sequences: filter

 


集合过滤

(filter #(> % 5) '(3 4 5 6 7))

=> (6 7)



相关内容

发表评论
更多 网友评论0 条评论)
暂无评论

Copyright © 2012-2014 我的代码板 Inc. 保留所有权利。

页面耗时0.0233秒, 内存占用1.83 MB, 访问数据库13次

闽ICP备15009223号-1