什么是元组?元组与列表、向量有什么区别?

8

能否简要介绍一下Tuple?以及何时使用它而不是ListVector

2个回答

14

Tuple通常在Clojure中通过关联数据结构,例如map {:name "david" :age 35}或者record来表示。

一个向量["david" 35]提供了快速的位置访问(= 35 (nth ["david" 35] 1)),并且您可以存储不同类型的元素。

列表 ("david" 35)("david" "justin" "david")从头部提供快速访问和快速向前遍历。虽然它可以容纳不同类型的元素,但最常见的情况是包含一个确定顺序内的单个类型,可能包含重复项。与集合#{"david" "justin"}相比,后者不包含重复项并且针对检查成员/存在进行了优化。

排序集(sorted-set)和排序映射(sorted-map)使用比较器维护对象的顺序。

请查看4clojure和clojuredocs.org。祝好运!


7

如果您需要在数据结构中进行大量的插入/删除操作,应使用List。如果在数据结构中频繁访问变量,请使用vector。

Tuples是将不同类型的元素打包到单个对象中的对象,就像pair对象为一对元素做的那样,但是通用于任意数量的元素。 从概念上讲,它们类似于普通的数据结构(类似C语言的结构体),但是它的元素是按照元组中的顺序访问的,而不是通过命名的数据成员来访问。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接