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

2023-10-26

前言

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

基本索引

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

# coding:utf-8

a = []
for i in range(10):
    a.append(i)

print(a)
# 基本索引
print("第0个元素为", a[0])

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

# coding:utf-8

a = []
for i in range(10):
    a.append(i)

print(a)
# 基本索引
print("第0个元素为", a[0])
# 使用负数索引
print("第-2个元素为", a[-2])

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

# coding:utf-8

a = []
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-8

a = []
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-8

a = []
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-8

a = []
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-8

a = []
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-8

a = []
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-8

a = []
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])

在这里插入图片描述

完结,撒花撒花…

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

详解Python中的切片(一看就懂版) 的相关文章

随机推荐

  • stm32专题十七:深度解析 stm32 硬件iic (i2c)

    首先是配置I2C的GPIO 然后配置I2C参数 就是常规配置 按流程来写不会错 brief EEPROM IIC 配置 void I2C EE config void GPIO InitTypeDef GPIO InitStruct I2C
  • 28所示范性微电子院校占地面积排名,中山大学第一!

    01中山大学13725 中山大学简称中大 现有广州 珠海和深圳三校区五校园 占地面积共计13725亩 1924年 孙中山亲手将广州地区多所高校整合创立国立广东大学 1926年定名为国立中山大学 如今该校由1952年院系调整后分设的中山大学和
  • http://chdbits.org/signup.php 邀请码,www.chdbits.co

    Domain Name chdbits co Registry Domain ID D167587220 CO Registrar WHOIS Server whois godaddy com Registrar URL www godad
  • IAR下如何确定某一段代码的执行时间

    1 接出来一个I O口 然后设置反转 用示波器查看反转周期 2 软件仿真时计算两断点CYCLECOUNTER 在CPU registers中 的差值 乘以指令周期 MCLK 便是执行时间
  • getopt_long 杂谈

    首先先解释一下 getopt long 的 struct 的形式 const struct option longopts help 0 0 h container 1 0 c statistics 1 0 s verbose 0 0 v
  • 关于实现订单超时的几种方案

    更新 2022 10 28 说明 关于使用rabbitmq实现订单超时的部分说明有错误 首先mq是可以实现自定义超时时间的 我们可以在创建队列queue ordercreate时不设置它的x message ttl参数 转而在代码里设置消息
  • 用卷积神经网络实现手写字体的识别

    代码如下所示 coding utf 8 Time 2018 4 4 13 22 Author mgliu FileName mnist py Software PyCharm Community Edition coding utf 8 i
  • 使用R语言进行股票价格预测

    目录 1 准备工作 2 数据准备 3 数据预处理 4 构建和训练模型 5 评估模型
  • win7定位位置服务器,win7 定位 服务器地址

    win7 定位 服务器地址 内容精选 换一换 反向解析主要应用于自建邮箱服务器 可以提高邮箱服务器IP地址和域名的信誉度 多数垃圾邮件发送者使用动态分配或者没有注册域名的IP地址来发送垃圾邮件 以逃避追踪 设置了邮箱服务器IP地址到域名的反
  • eu5,eu7,ex3,ex5安装第三方app

    本教程介绍了 如何简单快速的在北汽的eu5 eu7 ex3 ex5等车安装第三方app应用 比如高德地图 QQ音乐 大大提高车机的娱乐性和可用性 安装过程简单明了 只需要一个U盘就可以了 不需要输入任何命令 按照教程点击按钮就可以完成所有操
  • 车联网安全基础知识学习笔记

    全球车联网产业生态不断丰富完善 当前 全球数字经济快速发展 新一代信息通信技术与各行各业融合渗透 车联网 工业互联网 物联网等新型产业生态不断壮大 有力推动了汽车 交通等传统产业的数字化 网络化 智能化发展 也逐步衍生出智慧出行 交通数字化
  • JeeSite简介

    系统管理 SYS 模块 包括组织架构 用户管理 机构管理 区域管理 菜单管理 角色权限管理 字典管理等功能 内容管理 CMS 模块 包括内容管理 文章 链接 栏目管理 站点管理 公共留言 文件管理 前端网站展示等功能 在线办公 OA 模块
  • 【MRI图像超分辨率入门及研究综述(个人总结版)】

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 了解核磁共振成像 1 机械系统 2 物理学原理 3 数据类型及类型转换 类型 格式转换 1 为什么转换 2 如何进行转换 4 成像过程 k space 定
  • 012-Unity中的几种Find方法

    版本 2018 3 14 1 transform Find 1 可以查找隐藏对象 2 支持路径查找 3 查找隐藏对象的前提是transform所在的根节点必须可见 即active true 注意 只能查找挂载物体上的子物体 否则查不到 2
  • vite require is not defined

    vuex使用webpack中的require context modules true js 获取目录下的所有文件 升级vue3使用vite报 require is not defined import createStore from v
  • element的分页怎么改中文配置_ElementUI pagination分页 自定义配置

    如何使用 ElementUI 自定义分页呢 尽管ElementUI比较全面的提供了分页 但实际开发中的需求是多种多样的 比如我需要把下图中的下拉选择每页的数据条数 换成可以手动输入的形式 并且把他的位置放到前往xx页的左边位置 实现代码如下
  • airpods耳机敲击没反应_为什么华强北AirPods出了那么多仿制品还有很多人不怕被坑,愿意买?...

    原因很简单 原版AirPods功能过于强大 体验感极好 设计非常细节 其次 华强北AirPods价格比原版优惠力度大 原版AirPods外观上 名称 经销商 UPS QI充电器指示 充电外壳采用反磁设计 打开后因为磁极排斥而不会自由下落 耳
  • Google Mock

    View Edit History Content 什么是Mock Google Mock概述 参考文档 最简单的例子 典型的流程 自定义方法 成员函数的期望行为 我改过的例子 现实中的例子 Mock protected private方法
  • 设计模式之观察者模式

    案例展示 原理分析 代码实现 Observer 接口 观察者接口 由观察者来实现 interface Observer fun update temperatrue Float pressure Float humidity Float O
  • 详解Python中的切片(一看就懂版)

    前言 在我们使用Python的时候 经常会听到 切片 这个词 那什么是切片呢 切片是对序列数据 列表 元组 字符串 根据下标索引 对一定范围内数据的获取 简单来说就是 通过下标索引获取一定范围内的元素 基本索引 什么叫基本索引呢 在Pyth