什么是序列?
序列指的是一块可以存储多个值的连续内存空间,这些值按一定顺序排列、可通过每个值所在位置编号(索引)访问它们。
Python中string、list、tuple、dict、set、bytes、bytearray都是序列类型。序列都可以进行的操作包括索引、切片、乘、加,dict、set比较特殊不支持 索引、切片、相加和相乘操作 。最常见的是list、tuple。
序列索引
序列中,每个元素都有属于自己的编号(索引)。从起始元素开始,索引值从 0 开始递增,如图 1 所示。

>>> a='chenshiyang'
>>> a[0] #通过索引访问元素
'c'
>>> a[-1]
'g'
>>> a[5]
'h'序列切片
切片操作是访问序列中元素的另一种方法,它可以访问一定范围内的元素,通过切片操作,可以生成一个新的序列。
序列实现切片操作的语法格式如下:
sname[start : end : step]其中,各个参数的含义分别是:
- sname:表示序列的名称;
- start:表示切片的开始索引位置(包括该位置),此参数也可以不指定,会默认为 0,也就是从序列的开头进行切片;
- end:表示切片的结束索引位置(不包括该位置),如果不指定,则默认为序列的长度;
- step:表示在切片过程中,隔几个存储位置(包含当前位置)取一次元素,也就是说,如果 step 的值大于 1,则在进行切片去序列元素时,会“跳跃式”的取元素。如果省略设置 step 的值,则最后一个冒号就可以省略。
>>> a='chenshiyang'
>>> a[0:3] # 取0到3字符,不包括索引3位置的字符串
'che'
>>> a[::1] # 取全部
'chenshiyang'
>>> a[::2] # 每隔两个字符取一个
'cesiag'
>>> a[::-1] # 字符串反转
'gnayihsnehc'
>>> a[:] # 取全部
'chenshiyang'
>>> a[0:9:4] # 0-9索引所在处,每隔4个字符取一个
'csa'序列相加
Python 中,支持两种类型相同的序列使用“+”运算符做相加操作,它会将两个序列进行连接,但不会去除重复的元素。
这里所说的“类型相同”,指的是“+”运算符的两侧序列要么都是序列类型,要么都是元组类型,要么都是字符串。
>>> a='chenshiyang'
>>> a+':Hi'
'chenshiyang:Hi'序列相乘
Python 中,使用数字 n 乘以一个序列会生成新的序列,其内容为原来序列被重复 n 次的结果。
>>> a*3
'chenshiyangchenshiyangchenshiyang'
>>> b=[None]*3 # 列表比较特殊在初始化的可以指定长度
>>> b
[None, None, None]检查元素是否包含在序列中
Python 中,可以使用 in 关键字检查某元素是否为序列的成员,其语法格式为:
value in sequence 或者 value not in sequence
>>> a='chenshiyang'
>>> 'chen' in a
True
>>> 'chen' not in a
False序列相关的内置函数
| 函数 | 功能 | 
|---|---|
| len() | 计算序列的长度,即返回序列中包含多少个元素。 | 
| max() | 找出序列中的最大元素。注意,对序列使用 sum() 函数时,做加和操作的必须都是数字,不能是字符或字符串,否则该函数将抛出异常,因为解释器无法判定是要做连接操作(+ 运算符可以连接两个序列),还是做加和操作。 | 
| min() | 找出序列中的最小元素。 | 
| list() | 将序列转换为列表。 | 
| str() | 将序列转换为字符串。 | 
| sum() | 计算元素和。 | 
| sorted() | 对元素进行排序。 | 
| reversed() | 反向序列中的元素。 | 
| enumerate() | 将序列组合为一个索引序列,多用在 for 循环中。 | 
>>> a='chenshiyang'
>>> len(a) # 获取长度
11
>>> max(a) # 获取最大字符
'y'
>>> min(a) # 获取最小字符
'a'
>>> list(a) # 转为list
['c', 'h', 'e', 'n', 's', 'h', 'i', 'y', 'a', 'n', 'g']
>>> str(a) # 转为字符串
'chenshiyang'
>>> sorted(a) # sorted排序会保留原序列
['a', 'c', 'e', 'g', 'h', 'h', 'i', 'n', 'n', 's', 'y']
>>> a
'chenshiyang'
>>> b=reversed(a) # reversed反转序列会保留原序列
>>> list(b)
['g', 'n', 'a', 'y', 'i', 'h', 's', 'n', 'e', 'h', 'c']
>>> a
'chenshiyang'
>>> for index, item in enumerate(a): #将序列组合为一个索引序列
...     print(index, item)
...
0 c
1 h
2 e
3 n
4 s
5 h
6 i
7 y
8 a
9 n
10 g
>>> a=[1,2,3,4] # 
>>> sum(a) # 只能数字类型 bool、int、float、complex
10注意序列是可迭代对象,但不是迭代器。






 
 


Comments | NOTHING