序列的通用操作
Posted 行走的cd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了序列的通用操作相关的知识,希望对你有一定的参考价值。
python中最基本的数据结构就是序列,python中包含6种内建序列,即列表,元组,字符串,Unicode字符串,buffer对象和xrange对象
下列操作对于所有python中所有的序列都适用:包括索引(index),切片(slicing),序列相加(adding),乘法(multiplying),成员资格,长度,最小值和最大值
一.索引
索引用来对单个元素进行访问,既可以对变量的引用操作,也可以直接操作序列,还可以操作函数的返回序列
1.对变量的引用操作:
>>> greeting=‘hello‘
>>> print(greeting[0])
h
>>> print(greeting[1])
e
2.直接操作序列:
>>> ‘hello‘[0]
‘h‘
>>> ‘hello‘[2]
‘l‘
3.操作函数的返回序列
>>> a=input()[0]
hello
>>> a
‘h‘
关于索引方向,python中的序列既可以从左向右索引,也可以从右向左索引,当从右向左索引时,最后一个元素的编号为-1
>>> greeting="hello"
>>> greeting[-1]
‘o‘
>>> greeting[-2]
‘l‘
二.切片
索引用来对单个元素进行访问,使用切片可以对一定范围的元素进行访问,切片通过冒号相隔的两个索引实现
>>> number=[1,2,3,4,5,6,7]
>>> number[1:3]
[2, 3]
>>> number[-3:-1]
[5, 6]
可见,切片操作既支持正数索引也支持负数索引,切片操作的实现需要提供两个索引 作为边界,第一个索引的元素包含在切片内,第二个索引的元素不包含在切片内,像数学里的a≥x<b。
当用负数索引时,如果想输出到最后一个元素,可以将第二个索引设置为空,这也适用于正数索引
>>> number=[1,2,3,4,5,6,7]
>>> number[-3:]
[5, 6, 7]
若要取得整个序列,将两个索引都设置为空:
>>> number=[1,2,3,4,5,6,7]
>>> number[:]
[1,2,3,4,5, 6, 7]
还可以设置第三个索引值,为步长,步长设置大于1的数时,会得到一个跳过某些元素的序列。步长不能为0,会报错
>>> number=[1,2,3,4,5,6,7,8,9,10]
>>> number[0:10:2]
[1, 3, 5, 7, 9]
步长也可以为负数,步长为负数时,从序列的尾部开始向左提取元素,直到第一个元素,也就是和正数步长输出的顺序相反
>>> number=[1,2,3,4,5,6,7,8,9,10]
>>> number[9:0:-1]
[10, 9, 8, 7, 6, 5, 4, 3,2]
可见,使用负数步长时,设置第二个索引为0,取不到序列中的第一个元素,只有设置第二个索引为空才行
>>> number=[1,2,3,4,5,6,7,8,9,10]
>>> number[9::-1]
[10, 9, 8, 7, 6, 5, 4, 3,2,1]
三.序列相加
使用‘+’可以进行序列的连接操作
>>> [1,2,3]+[2,3,4]
[1, 2, 3, 2, 3, 4]
>>> ‘hello‘+‘world‘
‘helloworld‘
但是不能将列表和字符串相加
>>> [1,2,3]+‘hello‘
Traceback (most recent call last):
File "<pyshell#28>", line 1, in <module>
[1,2,3]+‘hello‘
TypeError: can only concatenate list (not "str") to list
只有类型相同的序列才能通过加号进行序列连接操作,不同类型序列不能通过加号进行序列连接操作。
四.乘法
用一个数字乘以一个序列会生成新的序列,在新的序列中,原来的序列将被重复x次,这就是序列中的乘法
>>> ‘hello‘*5
‘hellohellohellohellohello‘
>>> [1,2]*4
[1, 2, 1, 2, 1, 2, 1, 2]
可以用来创建占用10个或更多元素空间的空列表,如[]*10
还可以用来初始化一个长度为x的序列,这时候就需要让每个编码位置上都为空值,此时需要一个值代表空值,即里面没有任何元素,可以使用None
如:
>>>a=[None]*5
[None,None,None,None,None]
五.成员资格
为了检查一个值是否在序列中,python为我们提供了in运算符
>>> greeting=‘hello world‘
>>> name=[‘xiao‘,‘ming‘,‘tony‘]
>>> number=[1,2,3,4,5]
>>> 1 in name
False
>>> ‘xiao‘ in name
True
>>> ‘h‘ in greeting
True
>>> ‘ ‘ in greeting
True
>>> 1 in greeting
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
1 in greeting
TypeError: ‘in <string>‘ requires string as left operand, not int
可见,数字类型不能在字符串类型中通过in进行成员资格检测,而字符串类型可以在数字列表中通过in进行成员资格检测
六.长度,最大值和最小值
>>> number=[1,2,3,4,5]
>>> len(number)
5
>>> max(number)
5
>>> min(number)
1
>>> max(1,2,3,4,5)
5
>>> min(1,2,3,4,5)
1
以上是关于序列的通用操作的主要内容,如果未能解决你的问题,请参考以下文章