一·切片的相关知识 1·概念 : 在Python中, 切片 (slice) 是对 序列型对象 (如 list, string, tuple) 的一种高级索引方法。简单来说就是如果我们需要对象中数据的哪一段,那切片就我们相当于
一·切片的相关知识
1·概念:在Python中, 切片 (slice) 是对序列型对象 (如 list, string, tuple)的一种高级索引方法。简单来说就是如果我们需要对象中数据的哪一段,那切片就我们相当于用两刀切割出我们想要的部分,一刀切开始(开始的值要取),另外一刀切结尾(结尾的值不取)。
2·语法:变量名[开始位置下标:结束位置下标:步长],这里的开始位置下标就是切割开始值的索引值,结束位置下标就是切割结束值的索引值,步长其实就相当于走楼梯,步长为1时每个阶梯都踩,那么范围内的每个值都取,然后步长为2时,相当于一步走两个阶梯,中间空了一个没踩,那么在范围内取值也会空一个。比如:[1,2,3,4,5]步长为2时就取[1,3,5]。
3·索引:索引咱们有正索引和负索引,索引从左到右都是从小到大排列的,以一个列表list1 = [1,2,3,"A","Y","O","小涛","谢谢观看"]来举例:
值
1
2
3
"A"
"Y"
"O"
"小涛"
“谢谢观看”
正索引
0
1
2
3
4
5
6
7
负索引
-8
-7
-6
-5
-4
-3
-2
-1
以上就是该列表里面的值所一一对应的正负索引,也就是值的下标。
二·切片操作(以列表为例)
1·切割出单个数据
list1 = [1,2,3,"A","Y","O","小涛","谢谢观看"]print(list1[2]) # 只需要直接指定索引值就可输出
# 输出结果:3
print(list1[-2]
# 输出结果:小涛
2·切割出指定段的数据
升序(步长为正,开始位置下标小于结束位置下标)
list1 = [1,2,3,"A","Y","O","小涛","谢谢观看"]# 步长不写时默认为1,开始值取,结束值不取(左闭右开)
print(list1[2:7])
# 输出结果:[3, 'A', 'Y', 'O', '小涛'] # 数据不包含结束位置下标对应的数据
# 结束位置下标没写时,直接输出至列表最后一个值
print(list1[2:])
# 输出结果:[3, 'A', 'Y', 'O', '小涛', '谢谢观看']
# 开始位置下标没写时,默认为0
print(list1[:7])
# 输出结果:[1, 2, 3, 'A', 'Y', 'O', '小涛']
# 取负索引一样的
print(list1[-7:-2])
# 输出结果:[2, 3, 'A', 'Y', 'O']
print(list1[-7:])
# 输出结果:[2, 3, 'A', 'Y', 'O', '小涛', '谢谢观看']
print(list1[:-2])
# 输出结果:[1, 2, 3, 'A', 'Y', 'O']
# 步长为2时,空一个不取
print(list1[2:7:2])
# 输出结果:[3, 'Y', '小涛']
降序(步长为负,开始位置下标大于结束位置下标)
list1 = [1,2,3,"A","Y","O","小涛","谢谢观看"]# 步长为负时,会反着取,也就是降序
print(list1[7:2:-2])
# 输出结果:['谢谢观看', 'O', 'A']
# 这里-9下标超出没有关系
print(list1[-2:-9:-1])
# 输出结果:['小涛', 'O', 'Y', 'A', 3, 2, 1]
3·切割出全部数据
升序
list1 = [1,2,3,"A","Y","O","小涛","谢谢观看"]print(list1[:])
# 输出结果:[1, 2, 3, 'A', 'Y', 'O', '小涛', '谢谢观看']
降序
list1 = [1,2,3,"A","Y","O","小涛","谢谢观看"]print(list1[::-1])
# 输出结果:['谢谢观看', '小涛', 'O', 'Y', 'A', 3, 2, 1]
4·连续切片
list1 = [1,2,3,"A","Y","O","小涛","谢谢观看"]# 连续切片就是逐一进行接片
print(list1[1:7][2:5][-3:-1]) # 先切[1:7] 结果为[2, 3, 'A', 'Y', 'O', '小涛'],在这个结果上再切[2:5]为['A', 'Y', 'O'],最后再这个切过两遍的结果上再切[-3:-1]
# 输出结果:['A', 'Y']
5·切片与for循环用法
for i in range(0,11)[2:10:2]:print(i)
# 输出结果:
2
4
6
8