详解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 import自定义模块方法
Feb 12 Python
Python中的localtime()方法使用详解
May 22 Python
Python中字典的基础知识归纳小结
Aug 19 Python
python enumerate函数的使用方法总结
Nov 15 Python
详解pyqt5 动画在QThread线程中无法运行问题
May 05 Python
Python tkinter和exe打包的方法
Feb 05 Python
Python中zip()函数的解释和可视化(实例详解)
Feb 16 Python
Django ModelForm操作及验证方式
Mar 30 Python
win10下python3.8的PIL库安装过程
Jun 08 Python
pandas处理csv文件的方法步骤
Oct 16 Python
Django Model层F,Q对象和聚合函数原理解析
Nov 12 Python
PO模式在selenium自动化测试框架的优势
Mar 20 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来处理多个提交任务
2008/05/08 PHP
PHP 七大优势分析
2009/06/23 PHP
PHP PDO操作MySQL基础教程
2017/06/05 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
2017/08/07 PHP
javascript中onmouse事件在div中失效问题的解决方法
2012/01/09 Javascript
使用jquery实现放大镜效果
2014/09/02 Javascript
JavaScript计算某一天是星期几的方法
2015/08/05 Javascript
基于nodejs+express(4.x+)实现文件上传功能
2015/11/23 NodeJs
理解JavaScript表单的基础知识
2016/01/25 Javascript
微信和qq时间格式模板实例详解
2016/10/21 Javascript
easyui combobox开启搜索自动完成功能的实例代码
2016/11/08 Javascript
JavaScript实现选中文字提示新浪微博分享效果
2017/06/15 Javascript
webpack打包nodejs项目的方法
2018/09/26 NodeJs
AngularJS 多指令Scope问题的解决
2018/10/25 Javascript
对layui中的onevent 和event的使用详解
2019/09/06 Javascript
新手入门Python编程的8个实用建议
2019/07/12 Python
关于pymysql模块的使用以及代码详解
2019/09/01 Python
Spring实战之使用util:命名空间简化配置操作示例
2019/12/09 Python
Python tkinter布局与按钮间距设置方式
2020/03/04 Python
python学习将数据写入文件并保存方法
2020/06/07 Python
Python 使用 PyQt5 开发的关机小工具分享
2020/07/16 Python
Python OpenCV中的numpy与图像类型转换操作
2020/12/11 Python
解决PyCharm无法使用lxml库的问题(图解)
2020/12/22 Python
CSS3属性box-shadow使用详细教程
2012/01/21 HTML / CSS
美国在线宠物商店:Chewy
2019/01/12 全球购物
什么是Deployment descriptors;都有什么类型的部署描述符
2015/07/28 面试题
C#中类(class)与结构(struct)的异同
2013/11/03 面试题
技校生自我鉴定范文
2013/09/26 职场文书
小学生防溺水广播稿
2014/01/12 职场文书
机械专业求职信
2014/05/25 职场文书
2014年服务员个人工作总结
2014/12/23 职场文书
2016年大学生党员承诺书
2016/03/24 职场文书
2019升学宴主持词范本5篇
2019/10/09 职场文书
导游词之太行山青龙峡
2020/01/14 职场文书
中国十大神话动漫电影排行榜 哪吒登顶 白蛇缘起排第七
2022/03/21 国漫
Win10 heic文件怎么打开 ? Win10 heic文件打开教程
2022/04/06 数码科技