首页 > 代码库 > 5.6.序列类型—str,unicode,list,tuple,bytearray,buffer,xrange

5.6.序列类型—str,unicode,list,tuple,bytearray,buffer,xrange

Python一共有七种序列类型:stringsUnicode stringsliststuplesbytearraysbuffers,以及xrange对象。

对于其他容器可以查阅内置的dict和set类以及collections模块。

字符串常量(String literals)使用单引号或双引号来引用:比如,‘xyzzy‘,"frobozz"。您可以查找字符串常量章节来得到更多信息。Unicode strings看起来非常像strings,但是它在语法上的特别之处在于你需要使用一个’u‘前缀:比如,u‘abc‘,u"def"。除了在这里提到的一些方法外,您还可以在字符串方法章节找到一些字符串特有的方法。Lists使用方括号表示,其中的元素使用逗号分隔:比如,[a, b, c]。Tuples使用圆括号表示(圆括号不是必须的,但是空的Tuple必须使用圆括号表示),其中元素使用逗号分隔:比如,a, b, c或者( )。注意,在只含有单个元素的Tuple里,元素后面需要跟一个逗号结尾:比如,(d, )。

Bytearray对象使用内置的bytearray()方法创建。

Buffer对象不被Python的语法直接支持,但是我们可以通过调用内置的buffer()方法创建它。它不支持连接和复制。

Xranges对象和Buffer对象类似,它不被Python的语法直接支持,但是我们可以通过使用xrange()方法来创建它。它不支持切片、连接和复制,在它上面使用in, not in, min(), max()也是无效的。

大多数的序列类型支持如下的操作。in和not in操作符与比较操作符有相同的优先级。+和*运算符与相应的数值运算有相同的优先级。另外的一些操作方法提供可变序列类型使用。

下表对于序列操作符按优先级升序排列(在同一个框体中表示有相同的优先级)。在表中,s和t是相同类型的序列;n,i 和 j 是整形数:

OperationResultNotes
in sTrue if an item of s is equal to x, else False(1)
not in sFalse if an item of s is equal to x, else True(1)
tthe concatenation of s and t(6)
n, sn shallow copies of s concatenated(2)
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)
len(s)length of s 
min(s)smallest item of s 
max(s)largest item of s 
s.index(x)index of the first occurrence of x in s 
s.count(x)total number of occurrences of x in s 

序列类型也支持比较操作。特别地,tuples和lists以字典序比较相对应的元素。这意味着,两个序列相等必须在它们所包含的元素对应项相等时成立,并且他们的长度也必须相等。(关于更多的关于比较的细节请看Comparisons章节)

英文原文地址:https://docs.python.org/2/library/stdtypes.html#sequence-types-str-unicode-list-tuple-bytearray-buffer-xrange