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系列之从文件读取和保存数据
May 23 Python
深入浅析python定时杀进程
Jun 06 Python
windows系统下Python环境搭建教程
Mar 28 Python
python添加模块搜索路径和包的导入方法
Jan 19 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
Aug 06 Python
Python numpy.zero() 初始化矩阵实例
Nov 27 Python
Python接口测试数据库封装实现原理
May 09 Python
python实现发送带附件的邮件代码分享
Sep 22 Python
python中time.ctime()实例用法
Feb 03 Python
python解包概念及实例
Feb 17 Python
在Django中使用MQTT的方法
May 10 Python
详解python的异常捕获
Mar 03 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
Zend引擎的发展 [15]
2006/10/09 PHP
php使用GD实现颜色渐变实例
2015/06/02 PHP
php通过两层过滤获取留言内容的方法
2016/07/11 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
2017/04/01 PHP
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
Prototype使用指南之selector.js
2007/01/10 Javascript
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
js实现人才网站职位选择功能的方法
2015/08/14 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
2016/08/18 Javascript
JavaScript中的await/async的作用和用法
2016/10/31 Javascript
Mobile Web开发基础之四--处理手机设备的横竖屏问题
2017/08/11 Javascript
使用JS实现图片轮播的实例(前后首尾相接)
2017/09/21 Javascript
javaScript字符串工具类StringUtils详解
2017/12/08 Javascript
基于JavaScript canvas绘制贝塞尔曲线
2018/12/25 Javascript
微信小程序实现日历签到
2020/09/21 Javascript
探索node之事件循环的实现
2020/10/30 Javascript
利用ctypes提高Python的执行速度
2016/09/09 Python
Python实现上下班抢个顺风单脚本
2018/02/07 Python
python实时获取外部程序输出结果的方法
2019/01/12 Python
Python3.0中普通方法、类方法和静态方法的比较
2019/05/03 Python
pytorch常见的Tensor类型详解
2020/01/15 Python
使用keras实现孪生网络中的权值共享教程
2020/06/11 Python
记一次Django响应超慢的解决过程
2020/09/17 Python
HTML5 绘制图像(上)之:关于canvas元素引领下一代web页面的问题
2013/04/24 HTML / CSS
美国求婚钻戒网站:Super Jeweler
2016/08/27 全球购物
ECCO爱步美国官网:来自丹麦的鞋履品牌
2016/11/23 全球购物
Feelunique德国官方网站:欧洲最大的在线美容零售商
2019/07/20 全球购物
库房主管岗位职责
2013/12/31 职场文书
优秀党员主要事迹
2014/01/19 职场文书
关于旷工的检讨书
2014/02/02 职场文书
西门豹教学反思
2014/02/04 职场文书
感恩教育活动总结
2014/05/05 职场文书
诉前财产保全担保书
2014/05/20 职场文书
人事经理岗位职责范本
2014/08/04 职场文书
导游词之重庆渣滓洞
2020/01/08 职场文书
JS前端宏任务微任务及Event Loop使用详解
2022/07/23 Javascript