Python中步长索引解析
2015-06-06 16:48
573 查看
在Python中使用列表或者元组时,除了会用到索引以后,还经常会遇到切片操作。楼主最近在看《Core Python programming》,其中第105页第5点谈及到了用步长索引来进行扩展的切片操作。
其实呢,step在这里表示的是切片的步长(step不能为0,默认为1):
若 step > 0, 则表示从左向右进行切片。此时,start必须小于end才有结果,否则为空。例如: s[0,: 5: 2]的结果是'ace'
若 step < 0, 则表示从右向左进行切片。 此时,start必须大于end才有结果,否则为空。列如: s[5: 0: -1]的结果是'fedcb'
那么,s[::-1]表示从右往左,以步长为1进行切片; s[::2] 表示从左往右以步长为2进行切片
Python中的range()函数和序列的这个特性非常相像。
range()函数可以说是一个生成序列的函数,例如:
range(5) : 0, 1, 2, 3, 4
range(1, 5):1, 2, 3, 4
上面两个例子比较容易理解,range()函数中也有最后一个参数step,比如:range(0,5, 2)则表示0,2,4
range(5,0,-2)表示(5,3,1)可以这么来理解:首先 ,range(0, 5)会生成一列数(表示为0,1,2,3,4,5): 由于step为-2,会从右向左进行切片步长为2,依次取索引为5,3,1的数,索引为0的不包括在内。
>>>s = 'abcdefgh' >>>s[::-1] 'hgfedcba' >>>s[::2] 'aceg'在Python的序列中(列表和元组都是序列),都可以可以使用切片操作: sequence[start : end : step] 前面两个好理解,分别为开始索引的位置和结束索引的位置(Python中提供两种索引:从左向右 0 ..... index-1 从右向左 -1 .... -index),关键是在这个step的含义。
其实呢,step在这里表示的是切片的步长(step不能为0,默认为1):
若 step > 0, 则表示从左向右进行切片。此时,start必须小于end才有结果,否则为空。例如: s[0,: 5: 2]的结果是'ace'
若 step < 0, 则表示从右向左进行切片。 此时,start必须大于end才有结果,否则为空。列如: s[5: 0: -1]的结果是'fedcb'
那么,s[::-1]表示从右往左,以步长为1进行切片; s[::2] 表示从左往右以步长为2进行切片
Python中的range()函数和序列的这个特性非常相像。
range()函数可以说是一个生成序列的函数,例如:
range(5) : 0, 1, 2, 3, 4
range(1, 5):1, 2, 3, 4
上面两个例子比较容易理解,range()函数中也有最后一个参数step,比如:range(0,5, 2)则表示0,2,4
range(5,0,-2)表示(5,3,1)可以这么来理解:首先 ,range(0, 5)会生成一列数(表示为0,1,2,3,4,5): 由于step为-2,会从右向左进行切片步长为2,依次取索引为5,3,1的数,索引为0的不包括在内。
相关文章推荐
- Leetcode: Length of Last Word in python
- Python学习日记---函数
- python类型转换
- python 装饰器 decorator
- python 正则字符串替换 re.sub 替换输入参数字符串inStrings 所有的一个或多个空格替换为newstring
- python 多线程
- python学习笔记第二课_Phoenix-晶
- python基础语法
- Python第一章基础知识
- python中simplejson模块
- Python3学习之二Django搭建
- <Python基础教程>_第五章_总结
- python str + int
- 7.python高级特性:切片,迭代,列表生成式,生成器,迭代器
- python学习之基础数据类型
- Python ConfigParser模块教程
- python处理blog文件数据
- python - re (正则表达式的学习)
- Python3.X登录模拟CSDN,获取文章列表
- 用python实现排列