1、序列
1.1、概述
在python中,最基本的数据结构是序列。序列中每个元素都有编号,即其位置或索引。从左到右,第一个元素的索引为0,第二个元素的索引为1,以此类推。从右到左,第一个元素索引可以标示为-1,第二个为-2,以此类推。
python序列包含列表、元组、字符串等类型。
1.2、序列的通用操作
1.2.1、索引
通过索引访问序列中的单个元素。
>>> s = 'abcde'
>>>
>>> s[1]
'b'
>>>
>>> s[0]
'a'
>>>
>>> s[-1]
'e'
1.2.2、切片
通过切片可以访问序列特定范围内的元素。
格式:sequence_name[index1:index2:步长]
index1为空时,表示从第一个元素开始,index2为空时,表示到序列最后一个元素,当两个index都是空时,相当于复制整个序列。
切片取值包含左索引index1的元素,不包含右索引index2的元素,也就是左闭右开。
步长默认为1,也可以是其它值,包括负数,但不能是0。步长为正时,index1在index2左边时才能取到值,否则取值为空。步长为负时,则相反。
示例:
>>> s = '123456789'
>>>
>>> s[2:4]
'34'
>>>
>>> s[:5]
'12345'
>>>
>>> s[3:]
'456789'
>>>
>>> s[:]
'123456789'
>>>
>>>
>>> s[::2]
'13579'
>>>
>>> s[2::2]
'3579'
>>>
>>> s[1::3]
'258'
>>>
>>> s[-1:-2]
''
>>>
>>> s[-1:-1]
''
>>>
>>> s[4:2]
''
>>>
>>> s[-5:-1]
'5678'
>>>
>>> s[::-2]
'97531'
>>>
>>> s[::-1]
'987654321'
>>>
>>> s[::0]
Traceback (most recent call last):
File "<pyshell#249>", line 1, in <module>
s[::0]
ValueError: slice step cannot be zero
>>>
>>> s[1:5:-1]
''
>>>
>>> s[5:1:-1]
'6543'
>>>
1.2.3、相加
通过加法可以拼接序列。
不同类型的序列不能相加,比如字符串和列表都是序列,但是相加会报错。
>>> 'abc' + 'def'
'abcdef'
>>>
>>> [1,3,2] + ['abc','ddd']
[1, 3, 2, 'abc', 'ddd']
>>>
>>>> 'abc' + [1,3,2]
Traceback (most recent call last):
File "<pyshell#261>", line 1, in <module>
'abc' + [1,3,2]
TypeError: can only concatenate str (not "list") to str
>>>
1.2.4、乘法
将序列与x相乘,则重复这个序列x次来创建一个新序列。
>>> 'abc' * 5
'abcabcabcabcabc'
>>>
>>> (1,2) * 3
(1, 2, 1, 2, 1, 2)
>>>
>>> ['x',1,'y',3] * 2
['x', 1, 'y', 3, 'x', 1, 'y', 3]
>>>
1.2.5、成员资格
通过运算符 in 来检查特定值是否在序列中,如果在,则返回True,否则返回False。
>>> p = 'rw'
>>>
>>> 'r' in p
True
>>>
>>> 'x' in p
False
>>>
>>> ss = 'aabedc'
>>> 'aa' in ss