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 相关文章推荐
linux系统使用python监测系统负载脚本分享
Jan 15 Python
Python出现segfault错误解决方法
Apr 16 Python
Python设计实现的计算器功能完整实例
Aug 18 Python
python中reload(module)的用法示例详解
Sep 15 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
Oct 25 Python
python初步实现word2vec操作
Jun 09 Python
解决keras使用cov1D函数的输入问题
Jun 29 Python
详解Python多线程下的list
Jul 03 Python
scrapy利用selenium爬取豆瓣阅读的全步骤
Sep 20 Python
python实现按日期归档文件
Jan 30 Python
pycharm 使用anaconda为默认环境的操作
Feb 05 Python
Python中字符串对象语法分享
Feb 24 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实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
2017/09/02 PHP
PHP实现数据库的增删查改功能及完整代码
2018/04/18 PHP
PHP中有关长整数的一些操作教程
2019/09/11 PHP
对象特征检测法判断浏览器对javascript对象的支持
2009/07/25 Javascript
JavaScript 学习笔记 Black.Caffeine 09.11.28
2009/11/30 Javascript
javascript分页代码实例分享(js分页)
2013/12/13 Javascript
javascript实现左右控制无缝滚动
2014/12/31 Javascript
jQuery中parent()方法用法实例
2015/01/07 Javascript
利用jQuery及AJAX技术定时更新GridView的某一列数据
2015/12/04 Javascript
JavaScript 七大技巧(二)
2015/12/13 Javascript
AngularJS动态绑定HTML的方法分析
2016/11/07 Javascript
JS闭包的几种常见形式实例详解
2017/09/16 Javascript
详解Vue路由History mode模式中页面无法渲染的原因及解决
2017/09/28 Javascript
微信小程序实现的3d轮播图效果示例【基于swiper组件】
2018/12/11 Javascript
JavaScript实现省市区三级联动
2020/02/13 Javascript
在vue中使用Echarts画曲线图的示例
2020/10/03 Javascript
在vue中使用image-webpack-loader实例
2020/11/12 Javascript
Vuex实现简单购物车
2021/01/10 Vue.js
Python实现多线程下载文件的代码实例
2014/06/01 Python
Python解析网页源代码中的115网盘链接实例
2014/09/30 Python
对python字典元素的添加与修改方法详解
2018/07/06 Python
Python运行不显示DOS窗口的解决方法
2018/10/22 Python
python-视频分帧&多帧合成视频实例
2019/12/10 Python
Python调用ffmpeg开源视频处理库,批量处理视频
2020/11/16 Python
python 6种方法实现单例模式
2020/12/15 Python
Html5之自定义属性(data-,dataset)
2019/11/19 HTML / CSS
使用数据结构给女朋友写个Html5走迷宫游戏
2019/11/26 HTML / CSS
前端H5 Video常见使用场景简介
2020/08/21 HTML / CSS
美国婚戒购物网站:Anjays Designs
2017/06/28 全球购物
迪奥官网:Dior.com
2018/12/04 全球购物
简历的个人自我评价范文
2014/01/03 职场文书
公司年会主持词
2014/03/22 职场文书
教师党员个人整改措施
2014/10/27 职场文书
军训阅兵新闻稿
2015/07/17 职场文书
赡养老人协议书范本
2015/08/06 职场文书
警用民用对讲机找不同
2022/02/18 无线电