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标准库之多进程(multiprocessing包)介绍
Nov 25 Python
Python字符串替换实例分析
May 11 Python
python实现马耳可夫链算法实例分析
May 20 Python
批处理与python代码混合编程的方法
May 19 Python
Python中创建字典的几种方法总结(推荐)
Apr 27 Python
代码分析Python地图坐标转换
Feb 08 Python
Anaconda下配置python+opencv+contribx的实例讲解
Aug 06 Python
TensorFlow MNIST手写数据集的实现方法
Feb 05 Python
python不相等的两个字符串的 if 条件判断为True详解
Mar 12 Python
如何使用PyCharm引入需要使用的包的方法
Sep 22 Python
利用Python将多张图片合成视频的实现
Nov 23 Python
Python上下文管理器Content Manager
Jun 26 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 flock 文件锁详细介绍
2012/12/29 PHP
ThinkPHP3.1新特性之对Ajax的支持更加完善
2014/06/19 PHP
PHP中的一些常用函数收集
2015/05/26 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
PHP 并发场景的几种解决方案
2019/06/14 PHP
BOOM vs RR BO5 第四场 2.14
2021/03/10 DOTA
Javascript中Eval函数的使用说明
2008/10/11 Javascript
清除网页历史记录,屏蔽后退按钮!
2008/12/22 Javascript
return false,对阻止事件默认动作的一些测试代码
2010/11/17 Javascript
JS实现单行文字不间断向上滚动的方法
2015/01/29 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
2015/02/13 Javascript
详解JavaScript中的forEach()方法的使用
2015/06/08 Javascript
可以浮动某个物体的jquery控件用法实例
2015/07/24 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
实例详解jQuery Mockjax 插件模拟 Ajax 请求
2016/01/12 Javascript
js本地图片预览实现代码
2016/10/09 Javascript
详解从Node.js的child_process模块来学习父子进程之间的通信
2017/03/27 Javascript
Require.js的基本用法详解
2017/07/03 Javascript
详解组件库的webpack构建速度优化
2018/06/18 Javascript
在Vue 中使用Typescript的示例代码
2018/09/10 Javascript
jQuery实现的隔行变色功能【案例】
2019/02/18 jQuery
微信小程序引入Vant组件库过程解析
2019/08/06 Javascript
vue项目强制清除页面缓存的例子
2019/11/06 Javascript
Python捕捉和模拟鼠标事件的方法
2015/06/03 Python
Python 转义字符详细介绍
2017/03/21 Python
Python hashlib和hmac模块使用方法解析
2020/12/08 Python
CSS3实现彩色进度条动画的示例
2020/10/29 HTML / CSS
Bulk Powders意大利:运动补充在线商店
2019/02/09 全球购物
投标单位介绍信
2014/01/09 职场文书
《童年》教学反思
2014/02/18 职场文书
群众路线教育实践活动个人对照检查材料思想汇报(社区班子)
2014/10/06 职场文书
2014年党支部书记工作总结
2014/12/04 职场文书
班级联欢会主持词
2015/07/03 职场文书
如何使用flask将模型部署为服务
2021/05/13 Python
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
2021/05/14 Python
90后经典动画片排行:《数码宝贝》第二,《小鲤鱼历险记》在榜
2022/03/18 日漫