详解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实例分享:快速查找出被挂马的文件
Jun 08 Python
分析用Python脚本关闭文件操作的机制
Jun 28 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
Jan 20 Python
Python及PyCharm下载与安装教程
Nov 18 Python
Python利用pandas计算多个CSV文件数据值的实例
Apr 19 Python
python抓取网站的图片并下载到本地的方法
May 22 Python
Django 静态文件配置过程详解
Jul 23 Python
Python对接支付宝支付自实现功能
Oct 10 Python
Python 实现opencv所使用的图片格式与 base64 转换
Jan 09 Python
Python中用pyinstaller打包时的图标问题及解决方法
Feb 17 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
Oct 12 Python
在python中对于bool布尔值的取反操作
Dec 11 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实现转换html格式为文本格式的方法
2016/05/16 PHP
javascript读取RSS数据
2007/01/20 Javascript
JavaScript CSS菜单功能 改进版
2008/12/20 Javascript
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
2009/12/04 Javascript
关于jQuery对象数据缓存Cache原理以及jQuery.data详解
2013/04/07 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
jquery动态创建div与input的实例代码
2016/10/12 Javascript
微信小程序page的生命周期和音频播放及监听实例详解
2017/04/07 Javascript
jQuery插件FusionCharts绘制2D柱状图和折线图的组合图效果示例【附demo源码】
2017/04/10 jQuery
React Native自定义控件底部抽屉菜单的示例
2018/02/08 Javascript
js canvas实现橡皮擦效果
2018/12/20 Javascript
vue cli3.0 引入eslint 结合vscode使用
2019/05/27 Javascript
vue2 拖动排序 vuedraggable组件的实现
2019/08/08 Javascript
ES5新增数组的实现方法
2020/05/12 Javascript
基于Element封装一个表格组件tableList的使用方法
2020/06/29 Javascript
如何使用JavaScript实现无缝滚动自动播放轮播图效果
2020/08/20 Javascript
微信小程序接入vant Weapp组件的详细步骤
2020/10/28 Javascript
[02:45]2016年中国刀塔全程回顾,完美“圣”典即将上演
2016/12/15 DOTA
Python实现HTTP协议下的文件下载方法总结
2016/04/20 Python
python实现RabbitMQ的消息队列的示例代码
2018/11/08 Python
python中pygame安装过程(超级详细)
2019/08/04 Python
PyTorch的Optimizer训练工具的实现
2019/08/18 Python
Django如何批量创建Model
2020/09/01 Python
Python约瑟夫生者死者小游戏实例讲解
2021/01/04 Python
美国专业级皮肤病和spa品质护肤品的高级零售网站:SkinCareRx
2017/02/06 全球购物
THE OUTNET美国官网:国际设计师品牌折扣网站
2017/03/07 全球购物
KIKO MILANO荷兰网上商店:意大利专业化妆品品牌
2017/05/12 全球购物
BudgetAir印度:预订航班、酒店和汽车租赁
2019/07/07 全球购物
Skechers越南官方网站:来自美国的运动休闲品牌
2021/02/22 全球购物
指针和引用有什么区别
2013/01/13 面试题
语文教育专业推荐信范文
2013/11/25 职场文书
借款担保书范文
2014/05/13 职场文书
社保代办委托书怎么写
2014/10/06 职场文书
总经理助理岗位职责
2015/01/31 职场文书
英语辞职信范文
2015/02/28 职场文书
团结主题班会
2015/08/13 职场文书