python3中包含有4种内建的序列:列表、元组、字符串、unicode字符串(buffer对象;xrange对象在2中存在,3中好像没有了)
通用的序列操作
所有的序列类型都可以进行的操作:索引、切片、+拼接、*复制多次、成员资格检查in/not in、序列长度、查找最大元素、查找最小元素(内建函数的功劳)
索引
序列后紧跟一个方括号,括号中的数字表示元素索引号;正向索引范围为0--n-1,反向索引范围为-n -- -1
>>> a="abcdefg"
>>> a[0]
'a'
>>> a[-7]
'a'
>>> a[6]
'g'
>>> a[-1]
'g'
切片
操作跟索引类似,区别是方括号中的索引必须包含至少一个冒号,冒号左边表示索引的开始位置,右边表示结束索引的位置。若开始位置参数缺省则表示从序列首开始索引;若结束位置参数缺省则表示一直索引到序列尾部;若只有一个冒号则表示全部索引。
>>> a[1:3]
'bc'
>>> a[:3]
'abc'
>>> a[1:]
'bcdefg'
>>> a[:]
'abcdefg'
第二个冒号后跟步长,这是灵活定义切片的一种方式
>>> a[-1::-1]
'gfedcba'
>>> a[1:7:2]
'bdf'
>>> a[-1:-7:-1]
'gfedcb'
从负步长切片的例子中可以看出,无论是他跟正步长一样,都是包含开始索引位置上的元素而不包含结束索引位置上的元素。
+拼接
同类型的序列可以通过加号拼接得到加长的新序列,可以是两个变量引用之间拼接,也允许变量引用和同类型序列之间的拼接,但是不同类型的序列之间就不允许这种操作。
>>> b="1234567"
>>> a+b
'abcdefg1234567'
>>> a+"fafas"
'abcdefgfafas'
>>> a+[1,2,3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: must be str, not list
*多次复制
用序列乘以一个整数x会得到一个新的序列,新序列中原序列会被重复x次。这个性质可以用来快速赋值和初始化
>>> a*4
'abcdefgabcdefgabcdefgabcdefg'
空列表可以用两个中括号表示[[]]。
成员资格in/not in
查找一个元素是否在序列中,可以用in/not in 来检查,返回的结果是布尔值
>>> 'a' in a
True
>>> 'b' not in a
False
长度、最小值、最大值
这个可以通过当前python版本的内建函数len,min,max实现,大小比较是根据字符的ASCII值比较的
>>> len(a)
7
>>> max(a)
'g'
>>> min(a)
'a'
>>> min("aD12")
'1'
>>> min("aA")
'A'
>>> ord("a")
97