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