在2.x 版本的 python 文档中,它明确指出有七种序列数据类型。一段时间后(在同一页面上),文档继续讨论集合和元组,这两者都不包括在上述七个中。有谁知道究竟是什么定义了序列类型?我的直觉定义具有非常适合该法案的集合和元组,而且我没有任何运气找到明确的官方定义。
谢谢!
在2.x 版本的 python 文档中,它明确指出有七种序列数据类型。一段时间后(在同一页面上),文档继续讨论集合和元组,这两者都不包括在上述七个中。有谁知道究竟是什么定义了序列类型?我的直觉定义具有非常适合该法案的集合和元组,而且我没有任何运气找到明确的官方定义。
谢谢!
“序列”这个词暗示了一个顺序,但集合并不是一个特定的顺序。
元素索引是 Python序列的基本概念。如果您查看序列操作表,您会看到一些直接使用索引的操作:
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
集合和字典没有元素索引的概念,因此不能被视为序列。
在数学中,非正式地说,序列是对象(或事件)的有序列表。像集合一样,它包含成员(也称为元素或术语)。有序元素的数量(可能无限)称为序列的长度。与集合不同,顺序很重要,完全相同的元素可以在序列中的不同位置多次出现。最准确地说,序列可以定义为一个函数,其域是一个可数的全序集,例如自然数。
http://en.wikipedia.org/wiki/Sequence
;)
请参阅Python 词汇表:
顺序
__getitem__()
一个支持通过特殊方法使用整数索引进行有效元素访问的迭代,并定义了一个len()
返回序列长度的方法。一些内置的序列类型是 list、str、tuple 和 unicode。请注意, dict 也支持__getitem__()
and__len__()
,但被认为是映射而不是序列,因为查找使用任意不可变键而不是整数。
元组是序列。集合不是序列——它们没有顺序,也不能被索引set[index]
——它们甚至没有任何索引的概念。(不过,它们是iterable
- 您可以迭代它们的项目。)