首页 > 代码库 > 5.6.序列类型—str,unicode,list,tuple,bytearray,buffer,xrange
5.6.序列类型—str,unicode,list,tuple,bytearray,buffer,xrange
Python一共有七种序列类型:strings,Unicode strings,lists,tuples,bytearrays,buffers,以及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 是整形数:
Operation | Result | Notes |
---|---|---|
x in s | True if an item of s is equal to x, else False | (1) |
x not in s | False if an item of s is equal to x, else True | (1) |
s + t | the concatenation of s and t | (6) |
s * n, n * s | n 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