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 15 Python
python实现排序算法
Feb 14 Python
python中is与双等于号“==”的区别示例详解
Nov 21 Python
Python lambda函数基本用法实例分析
Mar 16 Python
Python实现从log日志中提取ip的方法【正则提取】
Mar 31 Python
Python OS模块实例详解
Apr 15 Python
Python 二叉树的层序建立与三种遍历实现详解
Jul 29 Python
Python常用编译器原理及特点解析
Mar 23 Python
利用python实现凯撒密码加解密功能
Mar 31 Python
Python3.7在anaconda里面使用IDLE编译器的步骤详解
Apr 29 Python
python获取时间戳的实现示例(10位和13位)
Sep 23 Python
一行代码python实现文件共享服务器
Apr 22 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实现小型站点广告管理(修正版)
2006/10/09 PHP
php微信公众平台开发类实例
2015/04/01 PHP
Js 获取HTML DOM节点元素的方法小结
2009/04/24 Javascript
JavaScript 继承机制的实现(待续)
2010/05/18 Javascript
jquery 全局AJAX事件使用代码
2010/11/05 Javascript
javascript图片预加载实例分析
2015/07/16 Javascript
javascript表单验证大全
2015/08/12 Javascript
深入理解js数组的sort排序
2016/05/28 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
2016/10/27 Javascript
移动端脚本框架Hammer.js
2016/12/15 Javascript
NodeJs下的测试框架Mocha的简单介绍
2017/02/22 NodeJs
JS二分查找算法详解
2017/11/01 Javascript
nodejs基于WS模块实现WebSocket聊天功能的方法
2018/01/12 NodeJs
axios post提交formdata的实例
2018/03/16 Javascript
javascript面向对象三大特征之封装实例详解
2019/07/24 Javascript
vue+element-ui+axios实现图片上传
2019/08/20 Javascript
vue实现分页加载效果
2019/12/24 Javascript
下载糗事百科的内容_python版
2008/12/07 Python
python实现挑选出来100以内的质数
2015/03/24 Python
python处理xml文件的方法小结
2017/05/02 Python
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
ubuntu环境下python虚拟环境的安装过程
2018/01/07 Python
Python+request+unittest实现接口测试框架集成实例
2018/03/16 Python
python list删除元素时要注意的坑点分享
2018/04/18 Python
Python实现E-Mail收集插件实例教程
2019/02/06 Python
pandas的排序和排名的具体使用
2019/07/31 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
2020/12/10 Python
老海军美国官网:Old Navy
2016/09/05 全球购物
介绍一下RMI的基本概念
2016/12/17 面试题
生产部厂长职位说明书
2014/03/03 职场文书
勿忘国耻9.18演讲稿(经典篇)
2014/09/14 职场文书
新闻发布会活动策划方案
2014/09/15 职场文书
幼儿园大班教师个人总结
2015/02/05 职场文书
淮阳太昊陵导游词
2015/02/10 职场文书
2015年幼儿园保育员工作总结
2015/04/23 职场文书
HTML基本元素标签介绍
2022/02/28 HTML / CSS