详解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 04 Python
python中os操作文件及文件路径实例汇总
Jan 15 Python
Python的Flask框架中实现分页功能的教程
Apr 20 Python
python实现ID3决策树算法
Dec 20 Python
Python通过属性手段实现只允许调用一次的示例讲解
Apr 21 Python
Python读取本地文件并解析网页元素的方法
May 21 Python
Django自定义用户登录认证示例代码
Jun 30 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
Feb 26 Python
浅谈tensorflow模型保存为pb的各种姿势
May 25 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
Jun 30 Python
cookies应对python反爬虫知识点详解
Nov 25 Python
基于Python的EasyGUI学习实践
May 07 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与javascript的两种交互方式
2006/10/09 PHP
PHP IPV6正则表达式验证代码
2010/02/16 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
2014/09/02 PHP
PHP SPL标准库中的常用函数介绍
2015/05/11 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
一段利用WSH获取登录时间的jscript代码
2008/05/11 Javascript
JS 巧妙获取剪贴板数据 Excel数据的粘贴
2009/07/09 Javascript
新浪微博字数统计 textarea字数统计实现代码
2011/08/28 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
2016/05/24 Javascript
基于JS如何实现给字符加千分符(65,541,694,158)
2016/08/03 Javascript
bootstrap为水平排列的表单和内联表单设置可选的图标
2017/02/15 Javascript
js实现字符全排列算法的简单方法
2017/05/01 Javascript
详解Vue路由开启keep-alive时的注意点
2017/06/20 Javascript
React Native日期时间选择组件的示例代码
2018/04/27 Javascript
ES6中异步对象Promise用法详解
2019/07/31 Javascript
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
vue组件实现移动端九宫格转盘抽奖
2020/10/16 Javascript
python实现DNS正向查询、反向查询的例子
2014/04/25 Python
Python面向对象编程中关于类和方法的学习笔记
2016/06/30 Python
Python+Selenium自动化实现分页(pagination)处理
2017/03/31 Python
python机器学习之决策树分类详解
2017/12/20 Python
对Python中内置异常层次结构详解
2018/10/18 Python
使用python对文件中的单词进行提取的方法示例
2018/12/21 Python
Python面向对象之类和实例用法分析
2019/06/08 Python
WxPython实现无边框界面
2019/11/18 Python
python飞机大战pygame游戏之敌机出场实现方法详解
2019/12/17 Python
Python3 pyecharts生成Html文件柱状图及折线图代码实例
2020/09/29 Python
纯HTML5+CSS3制作生日蛋糕(代码易懂)
2016/11/16 HTML / CSS
澳大利亚香水在线商店:City Perfume
2020/09/02 全球购物
什么是URL
2015/12/13 面试题
工作过失检讨书
2014/02/23 职场文书
车间安全生产标语
2014/06/06 职场文书
办公经费申请报告
2015/05/15 职场文书
新闻稿格式范文
2015/07/18 职场文书
Python 类,对象,数据分类,函数参数传递详解
2021/09/25 Python