python切片操作

python中切片是用来切割可迭代对象(容器)

一个完整的切片是包含三个参数和两个冒号

例如 object [start:end:step],start和end代表的就是下标

与range函数极为相似,是一个前开后闭区间

start:切片的起始位置,如果没有值的话从头开始
end:切片的结束位置,但是不包含end(前闭后开),如果没有值的话表示切割到结束为止
step :步长,默认取值为1,如果为正数的情况表示从左往右,如果为负数表示从右往左

例如a=[1,2,3,4,5,6],其中1的下标为0,而2的下标为1

切割单个值:a[0]=1 a[1]=2

切割完整对象:

例如a=[0,1,2,3,4,5,6,7,8,9]

那么a[:]与a[::]代表的是一样的,结果都为[0,1,2,3,4,5,6,7,8,9],而a[::-1]代表的就是元素反过来遍历,结果为[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

start和end全部为正数的情况下:

例如a=[0,1,2,3,4,5,6,7,8,9]

a[1:6]表示下标从0开始,到6结束但不包含6,步长为1,结果是[1, 2, 3, 4, 5]

a[1:6:-1]表示下标从0开始,到6结束但不包含6,步长为-1,步长为-1与之矛盾,结果为[]

a[6:1:-1]表示下标从6开始,到1结束但不包含1,步长为-1,结果是[6, 5, 4, 3, 2]

a[:6:-1]由于步长为-1,从右向左,所以start的下标为9,end下标为6,步长为-1,结果是[9,8,7]

start和end全部取负数的情况:

例如a=[0,1,2,3,4,5,6,7,8,9]

a[:-6]表示下标从0开始,到-6结束但不包含-6(下标-1代表最后一位数,下标-2代表倒数第二位数,以此类推),步长为1,结果为[0, 1, 2, 3]

a[-1:-6]表示下标从-1开始(代表数字9),到-6结束但不包含-6(代表数字4),由于步长为1与此冲突,结果为[]

a[-6::-1]]表示下标从-6开始(代表数字4),由于步长为-1(倒序),所以表示以下标0结束(代表数字0),结果为[4, 3, 2, 1, 0]

start和end正负混合情况:

例如a=[0,1,2,3,4,5,6,7,8,9]

a[1:-6]表示下标从1开始(代表数字1),到-6结束但不包含-6(代表数字4),步长为1,结果为[1,2,3]

 a[1:-6:-1]表示下标从1开始(代表数字1),到-6结束但不包含-6(代表数字4),步长为-1与之矛盾,结果为[]

a[-1:6]表示下标从-1开始(代表数字9),到6结束但不包含6(代表数字6),结果为[]

a[-1:6:-1]表示下标从-1开始(代表数字9),到6结束但不包含6(代表数字6),步长为-1(逆向输出),结果为[9,8,7]

连续的切片操作:

例如a=[0,1,2,3,4,5,6,7,8,9]

 a[:8][2:5][-1:]首先先看a[:8],结果为[0,1,2,3,4,5,6,7],在a[:8](也就是[0,1,2,3,4,5,6,7])的基础下实现[2:5],结果为[2,3,4],在[2,3,4]的结果下实现[-1:],结果为[4]。

连续的切片操作无非是在上一级的结果下做下一级的操作。

切片中的三个参数为表达式:

当然start和end并不一定是确切的数字,也可以是表达式

例如a=[0,1,2,3,4,5,6,7,8,9]

 a[1+2:2*3:7%2],其中start为(1+2=3),end为(2*3=6),步长为(7%2=1),结果为[3,4,5]

切片可以操作其他的对象:

for i in range(0,100):
        print(i)

打印出来的结果为0到99

for i in range(0,100)[2::3][-10:]:
        print(i)

在0到99的前提下实现[2::3][-10:]切片操作

总结:
1. 如果进行切片操作的时候,超出下标不会报错
2. 如果切片操作的时候方向相互矛盾的话,不会报错,返回的空
3. 在python中进行反向输出列表
第一种:循环 第二种:[::-1] 第三种:reverse()

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值