广告
返回顶部
首页 > 资讯 > 后端开发 > Python >详解Python中的切片(一看就懂版)
  • 385
分享到

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

pythonnumpy开发语言 2023-08-31 21:08:06 385人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

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

前言

在我们使用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

--结束END--

本文标题: 详解Python中的切片(一看就懂版)

本文链接: https://www.lsjlt.com/news/387207.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作