详解Python中的切片(一看就懂版)

article/2025/10/28 23:29:17

前言

在我们使用Python的时候,经常会听到“切片”这个词!那什么是切片呢?切片是对序列数据(列表、元组、字符串),根据下标索引,对一定范围内数据的获取。
简单来说就是,通过下标索引获取一定范围内的元素。

基本索引

什么叫基本索引呢?
在Python中,对序列数据(列表、元组、字符串等),使用单个整数获取数据的方式,叫基本索引。
例如:

# coding:utf-8a = []
for i in range(10):a.append(i)print(a)
# 基本索引
print("第0个元素为", a[0])

在这里插入图片描述
Python中有语法糖:可以使用负数进行索引。
例如:

# coding:utf-8a = []
for i in range(10):a.append(i)print(a)
# 基本索引
print("第0个元素为", a[0])
# 使用负数索引
print("第-2个元素为", a[-2])

在这里插入图片描述
下面,我们用一张表展示a的索引范围。非负下标索引和负数下标索引共同构成了Python索引的有效范围。
在这里插入图片描述
在基本索引中,索引超出有效范围时会报IndexError!!!

# coding:utf-8a = []
for i in range(10):a.append(i)print(a)
# 基本索引
print("第0个元素为", a[0])
# 使用负数索引
print("第-2个元素为", a[-2])
# 索引超出有效索引范围
print(a[100])

在这里插入图片描述

基本切片

基本语法:
a[start : end],使用该语法之后,会获得a列表中左闭右开的一系列元素。当start和end为负数时,当作是负数索引进行切片即可。

# coding:utf-8a = []
for i in range(10):a.append(i)print(a)
# 基本索引
print("第0个元素为", a[0])
# 使用负数索引
print("第-2个元素为", a[-2])
# 索引超出有效索引范围
# print(a[100])
# 基本切片
print(a[2:8])
print(a[-5:-2])
print(a[2:-1])

在这里插入图片描述

超出有效范围

使用基本索引的话,超出有效范围,就会报错。
而在切片中,如果超出有效范围是不会报错的。但是会进行截断,就是仍然按范围进行左闭右开的获取,但是超出序列数据范围的部分,全部假想成空值,最终对获取到的空值进行忽略即可。
例如:

# coding:utf-8a = []
for i in range(10):a.append(i)print(a)
# 基本索引
print("第0个元素为", a[0])
# 使用负数索引
print("第-2个元素为", a[-2])
# 索引超出有效索引范围
# print(a[100])
# 基本切片
print(a[2:8])
print(a[-5:-2])
print(a[2:-1])# 超出有效范围
print("-" * 50)
print(a[-100:100])
print(a[3:55])

在这里插入图片描述

start在end的右边

当索引start在end的右边时,会发生什么呢?
不会报错。因为切不出元素,所以会返回一个空序列。

# coding:utf-8a = []
for i in range(10):a.append(i)print(a)
# 基本索引
print("第0个元素为", a[0])
# 使用负数索引
print("第-2个元素为", a[-2])
# 索引超出有效索引范围
# print(a[100])
# 基本切片
print(a[2:8])
print(a[-5:-2])
print(a[2:-1])# 超出有效范围
print("-" * 50)
print(a[-100:100])
print(a[3:55])# 当start在end的右边
print("-" * 50)
print(a[8:2])

在这里插入图片描述

start或end为缺省时

start和end是可以为缺省的,当start和end为缺省时,Python是尽可能取最大区间的。
例如:

# coding:utf-8a = []
for i in range(10):a.append(i)print(a)
# 基本索引
print("第0个元素为", a[0])
# 使用负数索引
print("第-2个元素为", a[-2])
# 索引超出有效索引范围
# print(a[100])
# 基本切片
print(a[2:8])
print(a[-5:-2])
print(a[2:-1])# 超出有效范围
print("-" * 50)
print(a[-100:100])
print(a[3:55])# 当start在end的右边
print("-" * 50)
print(a[8:2])# 缺省
print("-" * 50)
print(a[:5])
print(a[2:])

在这里插入图片描述

可以调整步长的切片

语法是:a[start : end :step],表示从start开始,每step取一个值,直到跨越了end(不包含end),step可正可负,不为0.
其实咋们平时用的基本切片就是step为1的切片!

step为正

# coding:utf-8a = []
for i in range(10):a.append(i)print(a)
# 基本索引
print("第0个元素为", a[0])
# 使用负数索引
print("第-2个元素为", a[-2])
# 索引超出有效索引范围
# print(a[100])
# 基本切片
print(a[2:8])
print(a[-5:-2])
print(a[2:-1])# 超出有效范围
print("-" * 50)
print(a[-100:100])
print(a[3:55])# 当start在end的右边
print("-" * 50)
print(a[8:2])# 缺省
print("-" * 50)
print(a[:5])
print(a[2:])# 带有步长的切片
# 步长为正
print("*" * 50)
print(a[0:7:2])
print(a[::2])
print(a[:-3:2])
print(a[-100:-4:3])

在这里插入图片描述

step为负

当step为负时,会进行逆序切片。因为当缺省时,python尽可能使获取到的区间尽可能大,那么缺省时,start会趋近无穷大,end会趋近无穷小。

# coding:utf-8a = []
for i in range(10):a.append(i)print(a)
# 基本索引
print("第0个元素为", a[0])
# 使用负数索引
print("第-2个元素为", a[-2])
# 索引超出有效索引范围
# print(a[100])
# 基本切片
print(a[2:8])
print(a[-5:-2])
print(a[2:-1])# 超出有效范围
print("-" * 50)
print(a[-100:100])
print(a[3:55])# 当start在end的右边
print("-" * 50)
print(a[8:2])# 缺省
print("-" * 50)
print(a[:5])
print(a[2:])# 带有步长的切片
# 步长为正
print("*" * 50)
print(a[0:7:2])
print(a[::2])
print(a[:-3:2])
print(a[-100:-4:3])# 步长为负时
print("@" * 50)
print(a[::-1])
# 为了保证取到的区间尽可能大,所以end趋向无穷小,所以会切到索引0
print(a[6::-1])
# 因为逆序切,为了保证取到的区间尽可能大,所以start会趋向于无穷大,一直切到索引4(不包含4)
print(a[:4:-2])

在这里插入图片描述

完结,撒花撒花…


http://chatgpt.dhexx.cn/article/2R70eIAe.shtml

相关文章

图片切片分割

在处理图片时,若加载一个大的图像,它加载所需要的时间一般会很长。 普通解决办法:压缩图片。 压缩时需要注意以下几个问题: 1、实际文件的大小; 2、分辨率; 3、压缩; 一般来说,压缩图片会使图像质量受…

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

首先简明概要说明用法,然后再用实际例子阐述。 用法概述 [-1] [:-1] [::-1] [n::-1]都是python中切片的使用方法。 [-1]:获取最后一个元素,类似于matlab中的end;[:-1]:除了最后一个元素,获取其他所有的元…

第五节——切片

切片 切片(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…