一、概要
在Python中,最基本的数据结构是序列(sequence)。序列中的每个元素被分配一个序号——即元素的位置,也称为索引。第一个索引是 0,第二个则是 1,以此类推。序列中的最后一个元素标记为 -1,倒数第二个元素为 -2,一次类推。 Python包含 6 中内建的序列,包括列表、元组、字符串、Unicode字符串、buffer对象和xrange对象。
- 索引
- 分片
- 加
- 乘
- 检查某个元素是否属于序列
- 计算序列长度
- 计算最大元素及最小元素
二、索引
- 概念
元素在序列中的编号。这些编号从0开始递增,0表示第一个元素,最后一个元素为序列的长度-1 - 语法格式
seq[索引]
-
结构图
- 示例代码
字符串中使用索引
函数中使用索引,有一些函数的返回值为字符串,有的返回其他的序列,我们可以在函数调用之后使用[]来对返回序列的元素值进行索引demo = 'Hello World' print(demo[0]) #输出 H print(demo[5]) #输出空格字符串 print(demo[-1]) #输出 d #思考可不可以索引是-0
In [6]: input("请输入:")[1] 请输入:123 Out[6]: '2'
三、切片
- 定义
切片也叫分片,即提取一个范围内的序列 - 语法格式
序列名(或字符串字面值)[beg_index:end_index,step]
- 说明
- beg_index
起始下标,默认0 - end_index
终止下标,默认取到末尾 - step:
表示取值的步长,默认为1,步长值不能为0,默认为1,步长可以为负数,表示从右向左提取元素
- beg_index
- 注意事项
- 范围采用左闭右开(顾头不顾尾),即第一个索引元素包含在分片内,第二个则不包含在分片内。
- 终止索引超出范围时,分片直接取到序列最后一个元素
- 索引和步长都具有正负两个值,分别表示左右两个方向取值。索引的正方向从左往右取值,起始位置为0;
- 负方向从右往左取值,起始位置为-1。因此任意一个序列结构数据的索引范围为 -len到 len-1范围内的连续整数。
- 示例代码
1、同时忽略两个索引,整个序列都成为分片了
2、开始索引,结束索引默认,步长默认,从包含的开始索引截取至末尾cele = "you can you up ,no can no bb ^_^" print(cele[:]) #输出 全部
3、开始索引为负数,结束索引默认,步长默认,从右边开始截取至末尾print(cele[1:])
4、结束索引,开始索引忽略,步长默认,截取0至结束索引print(cele[-1:])
5、结束索引为负数,开始索引忽略,步长默认,截取0至右边结束索引print(cele[:5])
6、开始索引比结束索引的元素在序列中出现得晚时,切片为空序列print(cele[:-3])
7、步长为2,截取开始索引到结束索引print(cele[-3:1])
8、左索引比右索引的元素在序列中出现得晚时print(cele[0:10:2])
print(cele[::-1]) #反置
- 总结
- seq[start_index]
返回索引值为start_index的对象。start_index为 -len(seq)到len(seq)-1之间任意整数。 - seq[start_index: end_index]
返回索引值为start_index到end_index-1之间的连续对象。 - seq[start_index: end_index : step]
返回索引值为start_index到end_index-1之间,并且索引值与start_index之差可以被step整除的连续对象。 - seq[start_index: ]
缺省end_index,表示从start_index开始到序列中最后一个对象。 - seq[:end_index]
缺省start_index,表示从序列中第一个对象到end_index-1之间的片段。 - seq[:]
缺省start_index和end_index,表示从第一个对象到最后一个对象的完整片段。 - seq[::step]
缺省start_index和end_index,表示对整个序列按照索引可以被step整除的规则取值
- seq[start_index]
四、序列相乘
- 说明
用数字x乘以一个序列会产生新的序列,在新的序列中,原来的序列将被重复x次 - 示例代码
i = '1' * 5 print(type(i)) print(i)
五、序列相加
- 说明
两个序列相加返回一个新的序列 - 示例代码
seq1 = 'Hello' seq2 = 'World' seq3 = seq1 + seq2 print(seq3)
六、使用None创建空序列
- 示例代码
sequence = 10 * [None] sequence [None, None, None, None, None, None, None, None, None, None]
七、是否包含
- 说明
指某值是否在序列中,使用in运算符,运算符结果为布尔值True 或者 False - 语法格式
'某值' in 序列
- 示例代码
cele = "you can you up ,no can no bb ^_^" print('y' in cele) # True print('^_^' in cele) # True print('you1' in cele) # false
八、序列长度
- 内置函数
len(序列)
- 示例代码
cele = "you can you up ,no can no bb ^_^" print(len(cele)) #32
九、最小值
- 内置函数
min(序列)
- 示例代码
#纯数字 numbers = "123456789" print(min(numbers)) #1 #纯字母 letter = "abcdef" #字母加数字 letter = "abcdef123" print(min(letter)) #1 #中文 底层比较是Unicode编码 letter = "时间在哪里,成就就在哪里" print(min(letter)) #输出 ,(\u002c)
十、最大值
- 内置函数
max(序列)
- 示例代码
#纯数字 numbers = "123456789" print(max(numbers)) #9 #纯字母 letter = "abcdef" #字母加数字 letter = "abcdef123" print(max(letter)) #f #中文 底层比较是Unicode编码 letter = "时间在哪里,成就就在哪里" print(max(letter)) #输出 间(\u95f4)