python3中的切片
Posted AYO小涛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3中的切片相关的知识,希望对你有一定的参考价值。
一·切片的相关知识
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
以上是关于python3中的切片的主要内容,如果未能解决你的问题,请参考以下文章