序列
序列对象中的元素都是有序存放的,可以通过编号访问其元素。列表,元组,字符串都是序列对象。由于序列的操作具有一定的共性,因此这里介绍列表,元组,字符串的通用操作。
1、索引
索引是访问序列对象的主要方式,即通过位置编号引用序列中元素。索引一般为整数,放在方括号中。
这里定义了一个字符串 str='abcdef'
字符串元素与位置编号的关系:
正位置编号 0 1 2 3 4 5
列表元素 a b c d e f
负位置编号 -6 -5 -4 -3 -2 -1
索引操作示例:
>>> str='abcdef' #定义字符串
>>> str[1] #索引访问从左至右第二个
'b'
>>> str[-1] #索引访问从右往左第一个
'f'
>>> str[10] #超出索引范围,报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
2、分片
分片是从序列中切出部分元素的操作。
格式1:list[a:b],返回索引a~b-1之间的元素,默认步长为一。
格式2:list[a:b:c],返回索引a~b-1(或+1 当c为负数时)之间间隔为c的元素。c可为正可为负,c为负时表示逆序分片。
>>> mylist=[1,2,3,4,5,6]
>>> mylist
[1, 2, 3, 4, 5, 6]
>>> mylist[0:3] #返回索引0~2(2即3-1)的元素
[1, 2, 3]
>>> mylist[1:3] #返回索引1~2(2即3-1)的元素
[2, 3]
>>> mylist[0:5:2] #返回索引0 2 4(0,0+2,0+2+2)的元素
[1, 3, 5]
>>> mylist[5:0:-1] #返回索引5~1(1即0+1)的元素
[6, 5, 4, 3, 2]
>>> mylist[:] #省缺开始结束位置时
[1, 2, 3, 4, 5, 6]
>>> mylist[::-1] #可以用分片完成逆序
[6, 5, 4, 3, 2, 1]
3、序列加
序列加是连接两个序列的操作,将两个序列连成一个序列。只有同类型的序列才能相加。
>>> str1='abcd'
>>> str2='efgh'
>>> str1+str2 #序列相加
'abcdefgh'
>>> mylist=[1,2,3]
>>> mulist+str1 #不同类型序列相加,报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'mulist' is not defined
4、序列乘
序列乘也用于扩充序列,序列乘n得到一个重复n次的序列
>>> str1='abc'
>>> str1
'abc'
>>> 5*str1
'abcabcabcabcabc'
>>> str1*5
'abcabcabcabcabc'
>>> [str1]*3 #[str1]将str1变成列表,然后列表乘3
['abc', 'abc', 'abc']
5、成员资格
成员资格用于检查一个元素是否属于一个序列,通常用in运算符检测成员资格。
>>> 'b' in 'beixifen' #字符串检验成员资格
True
>>> 1 in (1,2,3) #元组检验成员资格
True
>>> 2 in [4,5,6] #列表检验成员资格
False
6、序列的内置函数
>>> min([1,2,3,9,8,7]) #求最小
1
>>> max([1,23,9,5,6]) #求最大
23
>>> len('beixifen') #求长度
8
>>> max(['a','b','c']) #按ASCII码
'c'
>>> for i,v in enumerate('abc'): #enumerate函数返回序列的编号和元素
... print(i,v)
...
0 a
1 b
2 c
参考文献:秦颖.Python实用教程.北京:清华大学出版社,2016.