python中[-1] [:-1] [::-1] [n::-1] 切片的用法
首先简明概要说明用法,然后再用实际例子阐述。
用法概述
[-1] [:-1] [::-1] [n::-1]都是python中切片的使用方法。
- [-1]:获取最后一个元素,类似于matlab中的end;
- [:-1]:除了最后一个元素,获取其他所有的元素;
- [::-1]:对第一个到最后一个元素进行倒序之后取出;
- [n::-1]:对第一个到第n个元素进行倒序后取出。
一般用法
在Python中,切片(slice)是对序列型对象(如list, string, tuple)的一种高级索引方法。普通索引只取出序列中一个下标对应的元素,而切片取出序列中一个范围对应的元素,这里的范围不是狭义上的连续片段。
基本索引
我们从Python的基本索引开始,即单个整数的索引。假设被索引的序列仍为之前提到的a,则基本索引的语法为a[index],其中index为下标。读者可能会觉得这里过于简单,但我们要强调的是Python一个语法糖:负数下标索引,即:index可以取为负数,当其为-n时,对倒数第n个元素进行索引。我们用一张表格值观展示a的索引范围。
简单的切片
简单切片指的是这样的切片形式:a[start:stop],其行为是得到下标在这样一个前闭后开区间范围内的元素,这个与matlab中的索引不大相同。其中start和stop为负数时,简单看作是负数下标对应的位置即可:
X = [1,2,3,4,5]
X[-3:-1]
[3, 4]
- 切片超出索引范围:当start或stop超出上文提到的有效索引范围时,切片操作不会抛出异常,而是进行截断。
#实质上截断为了X[-3:5]
X[-3:100]
[3, 4, 5]
- 缺省:start和stop都是可以缺省的,在缺省的情况下,Python的行为是
尽可能取最大区间
,具体来说:
#当step为正值,或者默认为1时,start的缺省值是无穷小(),stop的缺省值是无穷大()
#等效于X[0:3],前闭后开
X[:3]
[1, 2, 3]
#当step为负值是,Python的行为是尽可能取最大区间,此时访问是逆序的,start应尽量取大,stop应尽量取小,才能保证区间最大
X[:3:-1]
#等效于X[4:3],前闭后开
[5]
扩展切片
扩展切片指的是这样的切片形式:a[start:stop:step],其中step是一个非零整数,即比简单切片多了调整步长的功能,此时切片的行为可概括为:从start对应的位置出发,以step为步长索引序列,直至越过stop对应的位置,且不包括stop本身。事实上,简单切片就是step=1的扩展切片的特殊情况。需要详细解释的是step分别为正数和负数的两种情况。
- step为正数:按照step的间距,从最开始索引到最终值;
X[1:4:2]
[2, 4]
- step为负数:
X[-1:1:-2]
[5, 3]
实例说明
- [-1]:获取最后一个元素,类似于matlab中的end;
#-1即为负向第一个索引
X[-1]
5
- [:-1]:除了最后一个元素,获取其他所有的元素;
#由于step为缺省,默认为1,那么start缺省时取最小值0,即等效于X[0:-1]
X[:-1]
[1, 2, 3, 4]
- [::-1]:对第一个到最后一个元素进行倒序之后取出;
#由于step为-1是逆序,那么start缺省时取最大值4,stop缺省时取最小值-6,即等效于X[4:-6:-1]
X[::-1]
[5, 4, 3, 2, 1]
- [n::-1]:对第一个到第n个元素进行倒序后取出。
#由于step为-1是逆序,其中start为n,stop缺省时取最小值0,即等效于X[n:-(len+1):-1],即从第n个元素开始取出到第1个元素。
X[3::-1]
[4, 3, 2, 1]
#等效于X[3:-6:-1]
部分内容参考:https://zhuanlan.zhihu.com/p/79541418
python中[-1] [:-1] [::-1] [n::-1] 切片的用法相关推荐
- Python中的map()函数和reduce()函数的用法
Python中的map()函数和reduce()函数的用法 这篇文章主要介绍了Python中的map()函数和reduce()函数的用法,代码基于Python2.x版本,需要的朋友可以参考下
- python open 打开是什么类型的文件-详解Python中open()函数指定文件打开方式的用法...
文件打开方式 当我们用open()函数去打开文件的时候,有好几种打开的模式. 'r'->只读 'w'->只写,文件已存在则清空,不存在则创建. 'a'->追加,写到文件末尾 'b'- ...
- python中while。。。。else的用法
python中while....else的用法 python中的while后面的else的作用是指,当while循环正常执行,中间没有break的时候,会执else后面的语句. 但是如果while语句 ...
- python整段代码注释-Python中注释(多行注释和单行注释)的用法实例
Python中注释(多行注释和单行注释)的用法实例 发布时间:2020-09-30 23:18:32 来源:脚本之家 阅读:97 前言 学会向程序中添加必要的注释,也是很重要的.注释不仅可以用来解释程 ...
- Python学习总结(10) python中数据的常用操作之切片和迭代
1.切片 (slice ) 符号[ : ] 和Matlab中取任意长的数据方式完全一样! (1) 切片的由来: 取一个list或tuple的部分元素是非常常见的操作.比如,一个list如下: > ...
- python中range 函数_pythonrange,range函数的用法
当range()函数内填入第三个参数时,第三个参数表示百步长.函数语法:range(start,stop[,step])参数说明:start:计数从度start开始.默认是从0开始.例知如道range ...
- python使用符号#表示单行注释-Python中注释(多行注释和单行注释)的用法实例...
前言 学会向程序中添加必要的注释,也是很重要的.注释不仅可以用来解释程序某些部分的作用和功能(用自然语言描述代码的功能),在必要时,还可以将代码临时移除,是调试程序的好帮手. 当然,添加注释的最大作用 ...
- python中or关键字在变量赋值时的用法
在python中,某些情况下,or可以替换if else 达到代码简化的作用,比如在变量赋值时. 基本用法: v = p1 or p2 它完成的效果等同于: if p1:v = p1 else:v = ...
- 详解Python中的位运算符规则、原理与用法
在Python中,位运算符包括位与(&).位或(|).位求反(~).位异或(^).左移位(<<)和右移位(>>). 1. 运算方法与规则 位运算符只能适用于整数,其总体 ...
最新文章
- 实现Windows Phone、Android和iOS平台的统一硬件访问
- Mac 安装HomeBrew 出错
- SettingsPLSQLDeveloper
- python多态_Python 简明教程 21,Python 继承与多态
- 最新虚拟机VMware 下载安装
- 【网络基础】《TCP/IP详解》学习笔记3
- Nvidia CUDA初级教程4 GPU体系架构概述
- 关于git push报403的问题
- pytorch-alexnet-推理
- python实现自动打电话软件_python拨打电话
- c语言实验报告(八),C语言实验报告(八
- 关于慧斯顿电桥的疑惑
- 宁王比神联手,率锂电池和材料厂,决战锂矿
- IT人力外包越来越流行的原因剖析
- pip不是内部 pycharm_解决'pip' 不是内部或外部命令,也不是可运行的程序或批处理文件的问题...
- mac时间机器文件服务器,使用时间机器备份文件 - 处理文件和文件夹 - macOS使用手册...
- [转贴]内核版之OS设计
- 计算机中用于汉字处理的是什么意思,用于汉字输出的是什么编码
- 低成本MEMS惯导系统的捷联惯导解算MATLAB仿真
- 白帽子讲Web安全读书笔记