文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-08-31 21:47

关注

前言

在我们使用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趋向无穷小,所以会切到索引0print(a[6::-1])# 因为逆序切,为了保证取到的区间尽可能大,所以start会趋向于无穷大,一直切到索引4(不包含4)print(a[:4:-2])

在这里插入图片描述

完结,撒花撒花…

来源地址:https://blog.csdn.net/Elon15/article/details/127348178

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯