序列就是一堆数据元素的集合,并对每个元素进行编号。在Python中,字符串、列表、元组都属于序列,他们都具有一些特定的操作,如索引、切片、相加、相乘、in、长度、最大值和最小值。
下面以列表为例:
索引代表元素在列表中的位置,从0开始,以此类推
>>>g=[1,2,3,4,5]
>>>g[0]
1
#也可以从右开始索引,最右边的元素索引值-1, 从右往左递减
>>>g[-1]
5
在python中,从左往右索引称为正索引,从右往左称为负索引. 使用负索引, 从最后一个元素开始计数,最后一个元素的位置编号为-1
使用切片可以对列表一定范围的元素进行访问
切片的语法:[起始:结束:步长]
注意:
>>>g=[1,2,3,4,5]
#取出索引为1和2的元素
>>>g[1:3]
[2,3]
#也可以使用负索引
#取出最后两个元素
>>>g[-2:]
[4,5]
#取出索引为1开始 到 倒数第2个
>>>g[1:-1]
[2,3,4]
#取出整个列表元素
>>>g[:]
[1,2,3,4,5]
#空列表,起始所以-3倒数第三个元素,0第一个元素,
#倒数第三个元素比第一个元素在列表中,所以是个空列表
>>>g[-3:0]
[]
#设置步长为2
>>>g[::2]
[1,3,5]
#步长-2
>>>g[::-2]
[5,3,1]
>>>g[::-1]
[5,4,3,2,1]
>>>g[1:4:2]
[2,4]
>>>g[-1:0:-2]#相当于先取出倒数第一个到第二个元素[5,4,3,2],然后按照步长2开始取数
[5,3]
两个列表可以通过+号连接起来,生成一个新的列表
>>>[1,2]+[3,4]
[1,2,3,4]
一个数字n乘以一个列表,会生成一个新的列表,新列表就是原列表重复n次.
>>>[1,2]*2
[1,2,1,2]
可以判断序列中是否存在某个元素
>>>a=[1,2,3]
>>>1 in a
True
>>>'a' in 'abc'
True
#数字类型不能再字符串类型中通过in判断
>>>1 in 'abc'
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: 'in <string>' requires string as left operand, not int
>>>a=[2,3,4,5]
>>>len(a)
4
>>>max(a)
5
>>>min(a)
2
list是一种有序的集合, 且列表内的值是可变的
除了上述序列的一些操作外,列表还有如下一些操作。
可以直接将其他序列转换为列表
>>>a=list('abc')
>>>a
['a','b','c']
一个列表中的值可以包含不同的数据类型
>>>a=[1,2,'c','d']
>>>a[0]
1
>>>a[2]
'c'
>>>a[1]=3
>>>a
[1,3,'c','d']
>>>a[4]=3
Traceback (most recent call last):
File "<input>", line 1, in <module>
IndexError: list assignment index out of range
#报错,索引超出了列表的最大索引值
>>>a=[1,2,3,4]
#将最后两个元素重新赋值
>>>a[2:]=[5,6]
>>>a
[1,2,5,6]
#替换最后一个元素 ,并增加其他元素
>>>a[-1:]=[7,8,9]
>>>a
[1,2,5,7,8,9]
#使用分片赋值在第三个位置插入[3,4]
>>>a[2:2]=[3,4]
>>>a
[1,2,3,4,5,7,8,9]
#使用分片赋值删除最后三个元素
>>>a[-3:]=[]
>>>a
[1,2,3,4,5]
>>>a=[1,2]
>>>b=[3,4]
>>>c=[a,b]
>>>c
[[1,2],[3,4]]
clear()方法用于清空列表, 类似于 del a[:]
>>>a=[1, 4, 2, 3]
>>>a.clear()
>>>a
[]
copy()方法用于复制列表 类似于a[:]
>>>a=[1, 4, 2, 3]
>>>b=a.copy()
>>>b
[1, 4, 2, 3]
>>>c=a[:]
>>>c
[1, 4, 2, 3]
#拷贝并不是指向原来的列表,而是实实在在的创建一份相同的列表
>>>a[1]=5
>>>a
[1, 5, 2, 3]
>>>b
[1, 4, 2, 3]
>>>c
[1, 4, 2, 3]
元组与列表相似, 不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。
需要注意的是:当元组只包含一个元素值时,必须在括号中的元素后加一个逗号,如:
>>>(1,)
(1,)
#空元组
>>>()
除了上述序列的一些操作外,列表还有如下一些操作。
tuple()与list()功能基本一样,将序列转换为元组
>>>tuple('abc')
('a','b','c')
>>>tuple([1,2,3])
(1,2,3)
>>>t=(1,'a',2)
>>>t[1]
'a'
>>>tup1 = (12, 34.56);
>>>tup2 = ('abc', 'xyz')
# 以下修改元组元素操作是非法的。
# tup1[0] = 100
# 创建一个新的元组
>>>tup1 + tup2;
(12, 34.56, 'abc', 'xyz')
元组中的元素值是不允许删除的,使用del语句来删除整个元组
>>>tup = ('Google', 'Runoob', 1997, 2000)
>>>del tup;
>>>tup
Traceback (most recent call last):
File "<input>", line 1, in <module>
NameError: name 'tup' is not defined
index和count与字符串和列表中的用法相同
#index(a, beg=0, end=len(string)):在指定范围[beg,end)查找a
>>> a = ('a', 'b', 'c', 'a', 'b')
>>> a.index('a', 1, 3) # 注意是左闭右开区间
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: tuple.index(x): x not in tuple
>>> a.index('a', 1, 4)
3
>>> a.count('b')
2
>>> a.count('d')
0