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正则表达式match和search用法实例
Mar 26 Python
Python基于动态规划算法解决01背包问题实例
Dec 06 Python
Python实现简易版的Web服务器(推荐)
Jan 29 Python
tensorflow构建BP神经网络的方法
Mar 12 Python
Python中文件的读取和写入操作
Apr 27 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
Jun 09 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
Oct 17 Python
pandas每次多Sheet写入文件的方法
Dec 10 Python
使用Template格式化Python字符串的方法
Jan 22 Python
python使用wxpy轻松实现微信防撤回的方法
Feb 21 Python
详解Python中namedtuple的使用
Apr 27 Python
python3.7.3版本和django2.2.3版本是否可以兼容
Sep 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
Body是什么,该怎么喝出咖啡里的口感
2021/03/03 咖啡文化
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
2014/05/06 PHP
PHP函数strip_tags的一个bug浅析
2014/05/22 PHP
Parse正式发布开源PHP SDK
2014/08/11 PHP
php操作xml入门之cdata区段
2015/01/23 PHP
php curl登陆qq后获取用户信息时证书错误
2015/02/03 PHP
PHP请求远程地址设置超时时间的解决方法
2016/10/29 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
2019/04/03 PHP
写了一个layout,拖动条连贯,内容区可为iframe
2007/08/19 Javascript
学习ExtJS table布局
2009/10/08 Javascript
jquery获取input的value问题说明
2010/08/19 Javascript
JavaScript中判断对象类型的几种方法总结
2013/11/11 Javascript
网页右侧悬浮滚动在线qq客服代码示例
2014/04/28 Javascript
JQuery中使用ajax传输超大数据的解决方法
2014/07/14 Javascript
JS获取图片lowsrc属性的方法
2015/04/01 Javascript
js弹出对话框方式小结
2015/11/17 Javascript
JavaScript DOM节点操作实例小结(新建,删除HTML元素)
2017/01/19 Javascript
详解vue-cli中的ESlint配置文件eslintrc.js
2017/09/25 Javascript
react实现点击选中的li高亮的示例代码
2018/05/24 Javascript
Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题
2019/04/16 Javascript
vue组件开发之tab切换组件使用详解
2020/08/21 Javascript
浅谈JavaScript节流和防抖函数
2020/08/25 Javascript
[44:39]2014 DOTA2国际邀请赛中国区预选赛 NE VS CNB
2014/05/21 DOTA
[01:16]DOTA2小知识课堂 Ep.03 芒果树无伤肉山
2019/12/05 DOTA
对python append 与浅拷贝的实例讲解
2018/05/04 Python
django数据库自动重连的方法实例
2019/07/21 Python
python实现人机猜拳小游戏
2020/02/03 Python
python 爬虫爬取京东ps4售卖情况
2020/12/18 Python
英国标志性奢侈品牌:Burberry
2016/07/28 全球购物
摩顿布朗英国官方网上商店:奢华沐浴、身体和头发护理
2016/10/29 全球购物
精彩的推荐信范文
2013/11/26 职场文书
网络技术专业求职信
2014/02/18 职场文书
工作时间擅自离岗检讨书
2014/10/24 职场文书
Python3的进程和线程你了解吗
2022/03/16 Python
Centos7 Shell编程之正则表达式、文本处理工具详解
2022/08/05 Servers