详解Python 切片语法


Posted in Python onJune 10, 2019

Python的切片是特别常用的功能,主要用于对列表的元素取值。使用切片也会让你的代码显得特别Pythonic。

切片的主要声明如下,假设现在有一个list,命名为alist:

alist = [0,1,2,3,4]

切片语法的基本形式为:

alist[start:stop:step]

可以看出对于列表的切片操作有三个参数,分别为:

  • start:起始位置
  • stop:终止位置
  • step:步长

三个参数都是可选参数,意义为list的下标,即index。step参数默认值为1。表现形式有以下几种:

alist[start:stop]
alist[start:]
alist[:stop]
alist[:]

  • 第一种方式指定了start与stop参数,从start指定的下标开始取alist的元素,直到stop-1,例如 a[1:3] 的结果为 [1,2] 。
  • 第二种方式会从start指定的下标开始,取alist剩余元素。例如 a[1:] 会得到 [1,2,3,4] 。
  • 第三种方式会从alist的开始,取list元素,直到下标为stop-1,例如 a[:4] 会得到结果 [0,1,2,3]
  • 第四种方式没有指定start与stop参数,则会返回整个列表。

需要注意的是, :stop 表示不在选定切片中的第一个值, alist[start:stop] 的取值类似于数学中的取值范围为 [start, stop) , 所以在步长默认为1的情况下, start-stop 的结果即为所取元素的数量。

负值用法

start与stop参数为负值

start与stop的值可以是负值,表示取值是从list的最后开始,而不是开头。 例如:

alist[-1]
alist[-3:]
alist[:-1]

[2,3,4]
[0,1,2,3]

step参数为负值

step为负值时候表示将列表逆向,最简单的例子如下:

alist[::-1]

输出结果为 [4,3,2,1,0] 。这个例子实际是以下面的这个形式返回,

[alist[-1], alist[-1-step], ..., alist[0]]

即从倒数第一个元素开始,每一步加上步长,因为这里步长为负数,所以是减法,直到alist的开头。 知道这个原理,就能明白一些加上了start与stop参数的复杂写法,例如:

指定了start参数

alist[1::-1]

实际上是这样返回:

[alist[1], alist[1-step], ..., alist[0]]

因此,返回的是 [1,0]

指定了stop参数

alist[:1:-1]

实际上是这样返回:

[alist[-1], alist[-1-step], ..., alist[stop+1]]

因此,返回的是 [4, 3, 2] 。

同时指定了start与stop参数

注意,由于是逆序,所以start参数应该大于stop参数。

alist[3:1:-1]

实际上是这样返回:

[alist[start], alist[start-step], ..., alist[stop+1]]

因此,返回的是 [3,2]

我们可以看出,

  • 如果指定了start参数,则从start参数index开始取元素,直到遇到stop下标或者list的第一个元素。
  • 如果未指定start参数,则从list倒数第一个元素开始,直到遇到stop下标或者list的第一个元素。

总结

切片语法的使用特别灵活,如果正确掌握了它的用法,能够简化你的代码。需要注意的是,Python也提供了slice类用于制造切片,例如:

alist[start:stop:step]

实际上等价于

alist[(slice(start,stop,step))]

以上所述是小编给大家介绍的Python 切片语法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Python 相关文章推荐
简单讲解Python中的数字类型及基本的数学计算
Mar 11 Python
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
Jun 02 Python
Python语言生成水仙花数代码示例
Dec 18 Python
TensorFlow实现Logistic回归
Sep 07 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
Dec 20 Python
python自动分箱,计算woe,iv的实例代码
Nov 22 Python
TensorFlow自定义损失函数来预测商品销售量
Feb 05 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
Apr 16 Python
python thrift 实现 单端口多服务的过程
Jun 08 Python
Python 忽略文件名编码的方法
Aug 01 Python
python中watchdog文件监控与检测上传功能
Oct 30 Python
python3中编码获取网页的实例方法
Nov 16 Python
使用Python OpenCV为CNN增加图像样本的实现
Jun 10 #Python
Python 虚拟空间的使用代码详解
Jun 10 #Python
在Python中过滤Windows文件名中的非法字符方法
Jun 10 #Python
对Python 检查文件名是否规范的实例详解
Jun 10 #Python
java判断三位数的实例讲解
Jun 10 #Python
Python字符串的一些操作方法总结
Jun 10 #Python
利用selenium爬虫抓取数据的基础教程
Jun 10 #Python
You might like
用PHP和ACCESS写聊天室(七)
2006/10/09 PHP
PHP版 汉字转码的实现详解
2013/06/09 PHP
用Json实现PHP与JavaScript间数据交换的方法详解
2013/06/20 PHP
云网广告中的代码,提示出错,大家找找
2006/11/21 Javascript
用javascript实现页面打印的三种方法
2007/03/05 Javascript
JQuery设置和去除disabled属性的5种方法总结
2013/05/16 Javascript
用jquery存取照片的具体实现方法
2013/06/30 Javascript
Bootstrap+jfinal实现省市级联下拉菜单
2016/05/30 Javascript
Vue.js动态添加、删除选题的实例代码
2016/09/30 Javascript
原生js实现鼠标跟随效果
2017/02/28 Javascript
完美解决浏览器跨域的几种方法(汇总)
2017/05/08 Javascript
webpack进阶——缓存与独立打包的用法
2017/08/02 Javascript
基于vue-cli创建的项目的目录结构及说明介绍
2017/11/23 Javascript
实战node静态文件服务器的示例代码
2018/03/08 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
2018/08/10 Javascript
js前端面试之同步与异步问题详解
2019/04/03 Javascript
前端Electron新手入门教程详解
2019/06/21 Javascript
jquery制作的移动端购物车效果完整示例
2020/02/24 jQuery
JavaScript this指向相关原理及实例解析
2020/07/10 Javascript
用Python实现服务器中只重载被修改的进程的方法
2015/04/30 Python
详解K-means算法在Python中的实现
2017/12/05 Python
python opencv3实现人脸识别(windows)
2018/05/25 Python
关于初始种子自动选取的区域生长实例(python+opencv)
2020/01/16 Python
python模拟点击网页按钮实现方法
2020/02/25 Python
在CentOS7下安装Python3教程解析
2020/07/09 Python
ivx平台开发之不用代码实现一个九宫格抽奖功能
2021/01/27 HTML / CSS
孕妇装中的著名品牌:Isabella Oliver(伊莎贝拉·奥利弗)
2016/10/31 全球购物
美津浓美国官网:Mizuno美国
2018/08/07 全球购物
医学生自我鉴定范文
2014/03/26 职场文书
2014年加油站工作总结
2014/12/04 职场文书
狂人日记读书笔记
2015/06/30 职场文书
小学生读书笔记
2015/07/01 职场文书
2016年学校党支部公开承诺书
2016/03/25 职场文书
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL
电脑关机速度很慢怎么办 提升电脑关机速度设置教程
2022/04/08 数码科技
Win11显卡控制面板打开显卡设置方法
2022/04/20 数码科技