Python切片用法实例教程


Posted in Python onSeptember 08, 2014

本文以实例形式讲述了Python中切片操作的用法,分享给大家供大家参考借鉴,具体如下:

取一个list或tuple的部分元素是非常常见的操作。比如,一个list如下:

>>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']

取前3个元素,应该怎么做呢?

比较笨的办法如下:

>>> [L[0], L[1], L[2]]
['Michael', 'Sarah', 'Tracy']

之所以是笨办法是因为扩展一下,取前N个元素就没辙了。

取前N个元素,也就是索引为0-(N-1)的元素,可以用循环:

>>> r = []
>>> n = 3
>>> for i in range(n):
...   r.append(L[i])
... 
>>> r
['Michael', 'Sarah', 'Tracy']

对这种经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作

对应上面的问题,取前3个元素,用一行代码就可以完成切片:

>>> L[0:3]
['Michael', 'Sarah', 'Tracy']

L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。

如果第一个索引是0,还可以省略:

>>> L[:3]
['Michael', 'Sarah', 'Tracy']

也可以从索引1开始,取出2个元素出来:

>>> L[1:3]
['Sarah', 'Tracy']

类似的,既然Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片,试试:

>>> L[-2:]
['Bob', 'Jack']
>>> L[-2:-1]
['Bob']

记住倒数最后一个元素的索引是-1。

切片操作十分有用。我们先创建一个0-99的数列:

>>> L = range(100)
>>> L
[0, 1, 2, 3, ..., 99]

可以通过切片轻松取出某一段数列。比如前10个数:

>>> L[:10]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

后10个数:

>>> L[-10:]
[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

前11-20个数:

>>> L[10:20]
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

前10个数,每两个取一个:

>>> L[:10:2]
[0, 2, 4, 6, 8]

所有数,每5个取一个:

>>> L[::5]
[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]

甚至什么都不写,只写[:]就可以原样复制一个list:

>>> L[:]
[0, 1, 2, 3, ..., 99]

tuple也是一种list,唯一区别是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple:

>>> (0, 1, 2, 3, 4, 5)[:3]
(0, 1, 2)

字符串'xxx'或Unicode字符串u'xxx'也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:

>>> 'ABCDEFG'[:3]
'ABC'
>>> 'ABCDEFG'[::2]
'ACEG'

在很多编程语言中,针对字符串提供了很多各种截取函数,其实目的就是对字符串切片。Python没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单。

总结:

有了切片操作,很多地方循环就不再需要了。Python的切片非常灵活,一行代码就可以实现很多行循环才能完成的操作

希望本文所述实例对大家进一步掌握Python程序设计能有所帮助。

Python 相关文章推荐
python解决汉字编码问题:Unicode Decode Error
Jan 19 Python
Python队列的定义与使用方法示例
Jun 24 Python
vue.js实现输入框输入值内容实时响应变化示例
Jul 07 Python
PyCharm鼠标右键不显示Run unittest的解决方法
Nov 30 Python
python自动发送测试报告邮件功能的实现
Jan 22 Python
python使用pipeline批量读写redis的方法
Feb 18 Python
Python大数据之从网页上爬取数据的方法详解
Nov 16 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
Dec 31 Python
GDAL 矢量属性数据修改方式(python)
Mar 10 Python
python安装后的目录在哪里
Jun 21 Python
详解python tcp编程
Aug 24 Python
python 实现mysql自动增删分区的方法
Apr 01 Python
Python常用模块用法分析
Sep 08 #Python
python实现斐波那契递归函数的方法
Sep 08 #Python
Python内置函数的用法实例教程
Sep 08 #Python
Python中函数的用法实例教程
Sep 08 #Python
Python多线程实例教程
Sep 06 #Python
Python Tkinter基础控件用法
Sep 03 #Python
Python Tkinter简单布局实例教程
Sep 03 #Python
You might like
PHP中获取时间的下一周下个月的方法
2014/03/18 PHP
在php7中MongoDB实现模糊查询的方法详解
2017/05/03 PHP
PHP的mysqli_set_charset()函数讲解
2019/01/23 PHP
thinkphp5+layui实现的分页样式示例
2019/10/08 PHP
javascript for循环设法提高性能
2010/02/24 Javascript
动感效果的TAB选项卡jquery 插件
2011/07/09 Javascript
20款效果非常棒的 jQuery 插件小结分享
2011/11/18 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
2015/06/19 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
2015/08/22 Javascript
基于jQuery实现网页打印功能
2015/12/01 Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
2016/01/26 Javascript
jQuery.deferred对象使用详解
2016/03/18 Javascript
Nodejs如何搭建Web服务器
2016/03/28 NodeJs
JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)
2016/06/02 Javascript
jQuery.Callbacks()回调函数队列用法详解
2016/06/14 Javascript
jQuery Easyui使用(一)之可折叠面板的布局手风琴菜单
2016/08/17 Javascript
JS判断非空至少输入两个字符的简单实现方法
2017/06/23 Javascript
JavaScript requestAnimationFrame动画详解
2017/09/14 Javascript
优雅的在React项目中使用Redux的方法
2018/11/10 Javascript
前端Vue项目详解--初始化及导航栏
2019/06/24 Javascript
转换layUI的数据表格中的日期格式方法
2019/09/19 Javascript
Vue v-model组件封装(类似弹窗组件)
2020/01/08 Javascript
Vue路由权限控制解析
2020/11/09 Javascript
使用python 爬虫抓站的一些技巧总结
2018/01/10 Python
Python中单例模式总结
2018/02/20 Python
python如何让类支持比较运算
2018/03/20 Python
详解Python 切片语法
2019/06/10 Python
提升Python效率之使用循环机制代替递归函数
2019/07/23 Python
PyTorch中Tensor的维度变换实现
2019/08/18 Python
Python魔术方法专题
2020/06/19 Python
全球性的在线购物网站:Zapals
2017/03/22 全球购物
美国鲜花递送:UrbanStems
2021/01/04 全球购物
诚信考试承诺书
2014/03/27 职场文书
2015年企业团支部工作总结
2015/05/21 职场文书
MySQL的索引你了解吗
2022/03/13 MySQL
MyBatis核心源码深度剖析SQL语句执行过程
2022/05/20 Java/Android