Python3之切片及内置切片函数slice
切片
取一个list或tuple的部分元素是非常常见的操作。比如,一个list
1 | L = [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] |
取前3个元素,应该怎么做
笨方法,一个个列出来
1 2 | >>> [L[ 0 ],L[ 1 ],L[ 2 ]] [ 0 , 1 , 2 ] |
假如需要列出N个但是N很大
循环方法
1 2 3 4 5 6 7 | >>> r = [] >>> n = 3 >>> for i in range (n): ... r.append(L[i]) ... >>> r [ 0 , 1 , 2 ] |
对于经常去指定索引范围的操作,用循环十分繁琐,因此pythone提供了切片操作符能大大简化操作
1 2 | >>> L[ 0 : 3 ] [ 0 , 1 , 2 ] |
L[0:3]表示,从索引0开始,直到索引3,但是不包含索引3,及索引0,1,2 一共3个元素
如果第一个索引为0可以省略
1 2 | >>> L[: 3 ] [ 0 , 1 , 2 ] |
也可以从索引1开始,取出2个元素来
1 2 | >>> L[ 1 : 3 ] [ 1 , 2 ] |
类似也可以倒数切片,-1代表倒数第1个索引
1 2 3 4 | >>> L[ - 2 :] [ 8 , 9 ] >>> L[ - 2 : - 1 ] [ 8 ] |
默认取的间隔是1也可以定义,隔几个去一个
从索引0取到索引9没隔两个取一个
1 2 | >>> L[ 0 : 10 : 2 ] [ 0 , 2 , 4 , 6 , 8 ] |
什么都不写,只写[:]就可以原样复制一个list
1 2 | >>> L[:] [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] |
tuple也是一个list,唯一区别是tuple不可变.tuple切片也是一个tuple
1 2 | >>> ( 0 , 1 , 2 , 3 , 4 , 5 )[: 3 ] ( 0 , 1 , 2 ) |
字符串'xxx'也是可以看成是一种list,也可以切片返回的是一个字符
1 2 | >>> 'abcde' [: 3 ] 'abc' |
切片函数slice
语法
1 2 | class slice (stop) class slice (start, stop[, step]) |
参数说明
1 2 3 | start - - 起始位置 默认为 None stop - - 结束位置 自定义 step - - 间距 默认为 None 间距为 1 |
1 2 3 4 5 6 7 8 9 10 11 | >>> myslice = slice ( 3 ) >>> myslice slice ( None , 3 , None ) >>> L[myslice] [ 0 , 1 , 2 ] >>> print (myslice.start) None >>> print (myslice.step) None >>> print (myslice.stop) 3 |
以上
1 2 3 | myslice = ( 3 ) 等价于 myslice = slice ( 0 , 3 , 1 ) |
自定义间隔step
1 2 3 4 5 6 7 | #切片范围为0-10 间距为2 >>> myslice = slice ( 0 , 10 , 2 ) #查看参数 >>> myslice slice ( 0 , 10 , 2 ) >>> L[myslice] [ 0 , 2 , 4 , 6 , 8 ] |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· 本地部署 DeepSeek:小白也能轻松搞定!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 从 Windows Forms 到微服务的经验教训
· 李飞飞的50美金比肩DeepSeek把CEO忽悠瘸了,倒霉的却是程序员
· 超详细,DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方Dee