序列的通用操作

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

 

以上是关于序列的通用操作的主要内容,如果未能解决你的问题,请参考以下文章

python 序列通用操作

29课时 可变序列 不可变序列 通用操作

序列的通用操作

Python基础--通用序列操作

字符串,列表,元组,字典,集合,序列通用操作

Python 通用的序列操作