详解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 相关文章推荐
web.py获取上传文件名的正确方法
Aug 26 Python
python实现文件快照加密保护的方法
Jun 30 Python
Python3使用requests包抓取并保存网页源码的方法
Mar 15 Python
对pandas数据判断是否为NaN值的方法详解
Nov 06 Python
在Pycharm中使用GitHub的方法步骤
Jun 13 Python
python如何以表格形式打印输出的方法示例
Jun 21 Python
TensorBoard 计算图的查看方式
Feb 15 Python
Python如何把Spark数据写入ElasticSearch
Apr 18 Python
详解pandas.DataFrame.plot() 画图函数
Jun 14 Python
Python调用JavaScript代码的方法
Oct 27 Python
golang特有程序结构入门教程
Jun 02 Python
python游戏开发Pygame框架
Apr 22 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内核解析:PHP中的哈希表
2014/01/30 PHP
PHP常用文件操作函数和简单实例分析
2016/06/03 PHP
解决laravel session失效的问题
2019/10/14 PHP
玩转jQuery按钮 请告诉我你最喜欢哪些?
2012/01/08 Javascript
jQuery中获取Radio元素值的方法
2013/07/02 Javascript
jQuery 重复加载错误以及修复方法
2014/12/16 Javascript
js获取当前日期前七天的方法
2015/02/28 Javascript
JavaScript中的splice()方法使用详解
2015/06/09 Javascript
jQuery实现带滑动条的菜单效果代码
2015/08/26 Javascript
详解JS中的立即执行函数
2017/02/24 Javascript
详解jquery插件jquery.viewport.js学习使用方法
2017/09/08 jQuery
JavaScript实现离开页面前提示功能【附jQuery实现方法】
2017/09/26 jQuery
浅谈React 服务器端渲染的使用
2018/05/08 Javascript
Angular6 Filter实现页面搜索的示例代码
2018/12/02 Javascript
详解在Javascript中进行面向切面编程
2019/04/28 Javascript
[48:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 VG vs KG
2018/03/31 DOTA
Python FTP操作类代码分享
2014/05/13 Python
windows 10下安装搭建django1.10.3和Apache2.4的方法
2017/04/05 Python
Python正则捕获操作示例
2017/08/19 Python
python 读入多行数据的实例
2018/04/19 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
2019/01/29 Python
pandas如何处理缺失值
2019/07/31 Python
对python中的*args与**kwgs的含义与作用详解
2019/08/28 Python
Python基于yield遍历多个可迭代对象
2020/03/12 Python
通过实例简单了解Python sys.argv[]使用方法
2020/08/04 Python
如何用Python徒手写线性回归
2021/01/25 Python
馥蕾诗美国官网:Fresh美国
2019/10/09 全球购物
杭州龙健科技笔试题.net部分笔试题
2016/01/24 面试题
最新自我评价范文
2013/11/16 职场文书
11月红领巾广播稿
2014/01/17 职场文书
师德模范事迹材料
2014/06/03 职场文书
自我介绍演讲稿范文
2014/08/21 职场文书
授权委托书怎么写
2014/09/25 职场文书
夫妻忠诚协议范文
2014/11/16 职场文书
2014幼儿园班主任工作总结
2014/12/04 职场文书
Python基础学习之奇异的GUI对话框
2021/05/27 Python