首先简明概要说明用法,然后再用实际例子阐述。

用法概述

[-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] 切片的用法相关推荐

  1. Python中的map()函数和reduce()函数的用法

    Python中的map()函数和reduce()函数的用法 这篇文章主要介绍了Python中的map()函数和reduce()函数的用法,代码基于Python2.x版本,需要的朋友可以参考下  

  2. python open 打开是什么类型的文件-详解Python中open()函数指定文件打开方式的用法...

    文件打开方式 当我们用open()函数去打开文件的时候,有好几种打开的模式. 'r'->只读 'w'->只写,文件已存在则清空,不存在则创建. 'a'->追加,写到文件末尾 'b'- ...

  3. python中while。。。。else的用法

    python中while....else的用法 python中的while后面的else的作用是指,当while循环正常执行,中间没有break的时候,会执else后面的语句. 但是如果while语句 ...

  4. python整段代码注释-Python中注释(多行注释和单行注释)的用法实例

    Python中注释(多行注释和单行注释)的用法实例 发布时间:2020-09-30 23:18:32 来源:脚本之家 阅读:97 前言 学会向程序中添加必要的注释,也是很重要的.注释不仅可以用来解释程 ...

  5. Python学习总结(10) python中数据的常用操作之切片和迭代

    1.切片 (slice ) 符号[ : ] 和Matlab中取任意长的数据方式完全一样! (1) 切片的由来: 取一个list或tuple的部分元素是非常常见的操作.比如,一个list如下: > ...

  6. python中range 函数_pythonrange,range函数的用法

    当range()函数内填入第三个参数时,第三个参数表示百步长.函数语法:range(start,stop[,step])参数说明:start:计数从度start开始.默认是从0开始.例知如道range ...

  7. python使用符号#表示单行注释-Python中注释(多行注释和单行注释)的用法实例...

    前言 学会向程序中添加必要的注释,也是很重要的.注释不仅可以用来解释程序某些部分的作用和功能(用自然语言描述代码的功能),在必要时,还可以将代码临时移除,是调试程序的好帮手. 当然,添加注释的最大作用 ...

  8. python中or关键字在变量赋值时的用法

    在python中,某些情况下,or可以替换if else 达到代码简化的作用,比如在变量赋值时. 基本用法: v = p1 or p2 它完成的效果等同于: if p1:v = p1 else:v = ...

  9. 详解Python中的位运算符规则、原理与用法

    在Python中,位运算符包括位与(&).位或(|).位求反(~).位异或(^).左移位(<<)和右移位(>>). 1. 运算方法与规则 位运算符只能适用于整数,其总体 ...

最新文章

  1. 实现Windows Phone、Android和iOS平台的统一硬件访问
  2. Mac 安装HomeBrew 出错
  3. SettingsPLSQLDeveloper
  4. python多态_Python 简明教程 21,Python 继承与多态
  5. 最新虚拟机VMware 下载安装
  6. 【网络基础】《TCP/IP详解》学习笔记3
  7. Nvidia CUDA初级教程4 GPU体系架构概述
  8. 关于git push报403的问题
  9. pytorch-alexnet-推理
  10. python实现自动打电话软件_python拨打电话
  11. c语言实验报告(八),C语言实验报告(八
  12. 关于慧斯顿电桥的疑惑
  13. 宁王比神联手,率锂电池和材料厂,决战锂矿
  14. IT人力外包越来越流行的原因剖析
  15. pip不是内部 pycharm_解决'pip' 不是内部或外部命令,也不是可运行的程序或批处理文件的问题...
  16. mac时间机器文件服务器,使用时间机器备份文件 - 处理文件和文件夹 - macOS使用手册...
  17. [转贴]内核版之OS设计
  18. 计算机中用于汉字处理的是什么意思,用于汉字输出的是什么编码
  19. 低成本MEMS惯导系统的捷联惯导解算MATLAB仿真
  20. 白帽子讲Web安全读书笔记

热门文章

  1. 计算机游戏如何设置,电脑怎么设置让别人玩不了游戏
  2. 谷歌浏览器78版本打开后电脑分辨率更改
  3. istio bookinfo微服务搭建流程
  4. QNAP更新失败,WEB页一直处于反复系统更新页面
  5. Lifecycle应用
  6. 投资她一个奶茶店和咖啡馆(代码实现)【网页可以自己修改】
  7. 双十二哪款蓝牙耳机性价比最高?四款高性价比蓝牙耳机推荐
  8. Source Insight 4.0.0087 Patched
  9. 关于《利用LexYacc进行词法分析和语法分析并生成语法树》
  10. SVN 树冲突解决详解