为什么Python集不被视为序列?

时间:2013-01-30 09:09:52

标签: set sequence

python documentation for versions 2.x中明确指出有七种序列数据类型。一段时间之后(在同一页面上),文档继续讨论集合和元组,这两个都不包括在上面的七个中。有谁知道究竟是什么定义了序列类型?我的直觉定义设置和元组非常适合该法案,我没有任何运气找到明确的官方定义。

谢谢!

4 个答案:

答案 0 :(得分:2)

" sequence"暗示订单,但订单不按特定顺序排列。

答案 1 :(得分:0)

Element index 是Python sequences的基本概念。如果你看一下序列操作表,你会看到一些直接与索引一起工作的东西:

s[i]        ith item of s, origin 0 (3)
s[i:j]      slice of s from i to j  (3)(4)
s[i:j:k]    slice of s from i to j with step k  (3)(5)
s.index(i)  index of the first occurence of i in s   

集合和字典没有元素索引的概念,因此不能被视为序列。

答案 2 :(得分:0)

  

在数学中,非正式地说,序列是对象(或事件)的有序列表。像集合一样,它包含成员(也称为元素或术语)。有序元素的数量(可能是无限的)称为序列的长度。与集合不同,顺序很重要,并且完全相同的元素可以在序列中的不同位置多次出现。最准确地说,序列可以定义为一个函数,其域是一个可数的完全有序集,例如自然数。

http://en.wikipedia.org/wiki/Sequence

答案 3 :(得分:0)

请参阅Python glossary

  

序列

     

一个iterable,它通过__getitem__()特殊方法使用整数索引支持有效的元素访问,并定义一个返回序列长度的len()方法。一些内置序列类型是list,str,tuple和unicode。请注意,dict还支持__getitem__()__len__(),但它被认为是映射而不是序列,因为查找使用任意不可变键而不是整数。

元组是序列。集合不是序列 - 它们没有顺序,也不能通过set[index]索引 - 它们甚至没有任何类型的索引概念。 (但它们是iterable - 您可以迭代他们的项目。)