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实现屏幕截图的代码及函数详解
Oct 01 Python
TensorFlow实现创建分类器
Feb 06 Python
Python django使用多进程连接mysql错误的解决方法
Oct 08 Python
Python3解释器知识点总结
Feb 19 Python
python实现小世界网络生成
Nov 21 Python
关于Python-faker的函数效果一览
Nov 28 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
Feb 16 Python
python GUI库图形界面开发之PyQt5信号与槽基础使用方法与实例
Mar 06 Python
Python任务自动化工具tox使用教程
Mar 17 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
Mar 30 Python
python 实现单例模式的5种方法
Sep 23 Python
Django后端按照日期查询的方法教程
Feb 28 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
NT IIS下用ODBC连接数据库
2006/10/09 PHP
phpinfo 系统查看参数函数代码
2009/06/05 PHP
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
2009/09/30 PHP
mysql 查询指定日期时间内sql语句实现原理与代码
2012/12/16 PHP
PHP执行SQL文件并将SQL文件导入到数据库
2015/09/17 PHP
PHP实现提高SESSION响应速度的几种方法详解
2019/08/09 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
2019/12/13 PHP
JavaScript 异步调用框架 (Part 3 - 代码实现)
2009/08/04 Javascript
JavaScript 大数据相加的问题
2011/08/03 Javascript
ie下动态加态js文件的方法
2011/09/13 Javascript
js Date概念详细介绍
2013/11/22 Javascript
js出生日期 年月日级联菜单示例代码
2014/01/10 Javascript
Jquery把获取到的input值转换成json
2017/05/15 jQuery
微信小程序实现跟随菜单效果和循环嵌套加载数据
2017/11/21 Javascript
Vue组件库发布到npm详解
2018/02/17 Javascript
打通前后端构建一个Vue+Express的开发环境
2018/07/17 Javascript
nodejs基础之常用工具模块util用法分析
2018/12/26 NodeJs
Vue2.4+新增属性.sync、$attrs、$listeners的具体使用
2020/03/08 Javascript
解决Vue大括号字符换行踩的坑
2020/11/09 Javascript
python实现sublime3的less编译插件示例
2014/04/27 Python
深入理解Python3中的http.client模块
2017/03/29 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
Python使用百度api做人脸对比的方法
2019/08/28 Python
Macbook安装Python最新版本、GUI开发环境、图像处理、视频处理环境详解
2020/02/17 Python
python模拟哔哩哔哩滑块登入验证的实现
2020/04/24 Python
python实时监控logstash日志代码
2020/04/27 Python
Python替换NumPy数组中大于某个值的所有元素实例
2020/06/08 Python
Python实现树莓派摄像头持续录像并传送到主机的步骤
2020/11/30 Python
Python实现曲线拟合的最小二乘法
2021/02/19 Python
一款利用html5和css3实现的3D立方体旋转效果教程
2016/04/26 HTML / CSS
html5的画布canvas——画出简单的矩形、三角形实例代码
2013/06/09 HTML / CSS
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
二年级体育教学反思
2014/01/15 职场文书
幼儿园春季开学寄语
2014/04/03 职场文书
医学专业自荐信
2014/06/14 职场文书
2015年社会实践个人总结
2015/03/06 职场文书