python中[-1] [:-1] [::-1] [n::-1] 切片的用法

article/2025/10/28 23:38:48

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

用法概述

[-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


http://chatgpt.dhexx.cn/article/fqLPcktE.shtml

相关文章

第五节——切片

切片 切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。切片是一个引用类型,它的内部结构包含地址、长度和容量。切片一般用于快速地操作一块数据集合。 切片定义 …

切片(slice)

一.切片的基本介绍(slice) (1) 切片是一个数组的引用,因此切片是引用类型,在进行传递时,遵守引用传递的机制。 (2) 切片的使用和数组类似,遍历切片、访问切片的元素和求切片长度len(slice)都一样 (3)切片的长度是可以变化的&#…

切片基础知识

一、切片含义 1.切片(slice)是对序列型对象的一种高级索引方法。python中是用来切割可迭代对象(容器) 2.切片对象:列表list, 字符串string, 元组tuple,range函数等 二、形式 一个完整的切片有三个参数 object[start:end:step…

Python中的切片(详细篇)学起来喔

Python中的切片知识. 在Python中,切片(slice)是对序列型对象(如list, string, tuple)的一种高级索引方法。 普通索引只取出序列中 一个下标 对应的元素,而切片取出序列中 一个范围 对应的元素,这里的范围不是狭义上的连续片段。通俗一点就是…

Python基础知识:切片

什么是切片操作 在Python中,切片(slice)是对序列型对象(如list, string, tuple)的一种高级索引方法。普通索引只取出序列中一个下标对应的元素,而切片取出序列中一个范围对应的元素,这里的范围不是狭义上的连续片段。下面的代码初步展示了切…

Django 对接 Mysql Datatime 日期格式化处理

查询显示结果时,前端界面会是英文格式显示日期,那么应该怎么处理? 这里直接在前端操作,将日期格式化 “ | ” 符号后,拼接日期格式根据本身数据库显示格式来去,我这里是年月日,时分秒

MySQL 日期类型小数秒的处理

一、 MySQL 日期类型对小数秒的支持 注:本文所使用MySQL版本为 5.7 版本。 官方文档:https://dev.mysql.com/doc/refman/5.7/en/fractional-seconds.html 1、小数秒位数精度 MySQL 支持小数秒的展示,比如官网的例子,在建表时&…

Java 接收 MySQL datetime 类型日期字段输出格式问题

文章目录 前言Java 与 MySQL 类型对应注解操作代码格式转换参考 前言 不管世事多艰难,别忘了,看开点儿,再温柔点儿,不要满身戾气,也不要紧皱眉头,生活都是在你眉开眼笑的时候,一天天好起来的。…

mysql查询数据库日期_mysql如何查询日期与时间

前言: 在项目开发中,一些业务表字段经常使用日期和时间类型,而且后续还会牵涉到这类字段的查询。关于日期及时间的查询等各类需求也很多,本篇文章简单讲讲日期及时间字段的规范化查询方法。 1.日期和时间类型概览 MySQL支持的日期和时间类型有 DATETIME、TIMESTAMP、DATE、…

操作MYSQL日期格式年 或 月 或 日

1,年(year): select year(create_time) from person2,月(month): select month(create_time) from person3,日(day): select day(create_time) from person4,yyyy-MM-…

关于Thymeleaf 日期字段时间格式化处理

1.接手项目时测试发现页面时间格式不对&#xff0c;如图所示&#xff1a; 代码调整前: <input type"text" name"recruitTime" th:field"*{recruitTime}" class"form-control" placeholder"yyyy-MM-dd HH:mm" required&g…

mysql里如何写日期_mysql之日期函数

写在前面 mysql的学习,断断续续,今天就接着学习mysql的日期操作吧。 系列文章 Mysql实战 1、获得当前时间格式yyyy-MM-dd HH:mm:ss select now(); 结果 另外一个获取当前时间的函数是:sysdate(); 区别:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。 …

MYSQL中时间毫秒数转换及日期格式化

一、时间戳转换成日期 java中常用bigint字段保存时间&#xff0c;通常将时间保存为一大串数字&#xff0c;每次取出需要在程序里转换&#xff0c;有时候程序里不方便&#xff0c;可以使用MYSQL自带的函数 FROM_UNIXTIME(unix_timestamp,format)。 举例&#xff1a; select …

MySql格式化日期

原文路径&#xff1a;https://www.cnblogs.com/duhuo/p/5650876.html mysql查询记录如果有时间戳字段时&#xff0c;查看结果不方便&#xff0c;不能即时看到时间戳代表的含义&#xff0c;现提供mysql格式换时间函数&#xff0c;可以方便的看到格式化后的时间。 1. DATE_FORMA…

com.jcraft.jsch.JSchException: verify: false

背景 高并发下&#xff0c;SFTP上传偶现com.jcraft.jsch.JSchException: verify: false&#xff0c;网上有说升级版本什么的修复了这个bug&#xff0c;然而升级版本后事实证明这个bug还是会出现&#xff0c;大概上传几百次会出现一次。但是项目不可能允许文件丢失&#xff0c;…

java jsch jar_使用JSch从Java在远程计算机上执行命令

SSH是任何一种every-day工具Linux系统管理工作。这是访问网络上的远程计算机&#xff0c;传输数据和执行远程命令的一种简单而安全的方法。除了交互模式之外&#xff0c;还有许多工具可以使依赖于现有技术的远程任务实现自动化ssh服务器/客户端架构。对于这样一种工具&#xff…

java jsch执行脚本_JSch远程执行脚本

JSch远程执行脚本 2017-02-24 在自动化测试的时候&#xff0c;需要远程操控服务器做一些操作&#xff0c;比如切日、起服务器、执行某些脚本。如何实现&#xff1f; 我们可以利用JSch&#xff0c;远程执行脚本。JSch是Java Secure Channel的缩写&#xff0c;是一个SSH2功能的纯…

JSch基本使用

欢迎支持笔者新作&#xff1a;《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》&#xff0c;同时欢迎关注笔者的微信公众号&#xff1a;朱小厮的博客。 欢迎跳转到本文的原文链接&#xff1a;https://honeypps.com/java/jsch-quick-start/ JSch 是SSH2的一个纯Ja…

基于 JSch 实现服务的自定义监控解决方案

一、基于 JSch 实现服务的自定义监控 JSch 是 SSH2 的一个纯 Java 实现。它允许你连接到一个 sshd 服务器&#xff0c;使用端口转发&#xff0c;X11转发&#xff0c;文件传输等等。你可以将它的功能集成到你自己的 程序中。 既然可以通过 SSH 连接到服务器&#xff0c;那就可…

java jsch_java - 使用JSch在远程计算机上执行命令

SSH是访问远程计算机,传输数据和执行远程命令的一种简单而安全的方法。除了基础的交互模式外,还有许多依赖于ssh Client/Server架构的工具可以实现自动化执行远程任务。我们可以找到ssh客户端的许多实现,但是如何从代码编程访问ssh提供的功能呢?本文介绍JAVA语言中使用ssh功…