【无标题】

一、介绍

在Python中,切片(slice)是对序列型对象(如list, string, tuple)的一种高级索引方法。 普通索引只取出序列中 一个下标 对应的元素,而切片取出序列中一个范围对应的元素。通俗一点就是在一定范围里面,用刀切出一部分,达到自己需要的一部分。.

二、原理

索引

首先我们要了解索引,Python中切片的索引方式分为两种:

  • 正索引
  • 负索引

以 a = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 为例:

切片的语法格式

复制代码
object[start_index:end_index:step]

(1)step: 正负数均可,其绝对值大小决定了切取数据时的"步长",正负号决定了"切取方向",正表示"从左往右"取值,负表示"从右往左"取值。

(2)start_index:表示起始索引(包含该索引本身);该参数省略时,表示从对象"端点"开始取值,至于是从"起点"还是从"终点"开始,则由step参数的正负决定,step为正从"起点"开始,为负从"终点"开始。

(3)end_index:表示终止索引**(不包含索引本身)**,可以确定索引的结束为止。当为空时表示取到"终点",具体终点是在左边还是右边,要看step的值是正数还是负数。

  • 开头:当步长>0时,不写默认0。当步长<0时,不写默认-1
  • 结束:当步长>0时,不写默认列表长度加一。当步长<0时,不写默认负的列表长度减一
  • 步长:默认1,>0 是从左往右走,<0是从右往左走(▽)

以下为例:

复制代码
>>>a_list = [1, 2, 3, 4, 5]
>>>b_list = a_list[1:4]
>>>b_list
[2, 3, 4]

三、实例

均以列表 >>> a = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 为例

1)取偶数位置

复制代码
>>>b = a[::2]
[0, 2, 4, 6, 8]

2)取奇数位置

复制代码
>>>b = a[1::2]
[1, 3, 5, 7, 9]

3)切取完整对象

复制代码
>>> a[:]      # 从左往右
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[::]     # 从左往右
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[::-1]    # 从右往左
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

4)任意切

python 复制代码
>>> a[1:6]       # step=1,从左往右取值,start_index=1到end_index=6同样表示从左往右取值。
[1, 2, 3, 4, 5]

>>>a[1:6:-1]     # step=-1,决定了从右往左取值,而start_index=1到end_index=6决定了从左往右取值,两者矛盾。
>>> []         # 输出为空列表,说明没取到数据。

>>>a[6:1]       # step=1,决定了从左往右取值,而start_index=6到end_index=1决定了从右往左取值,两者矛盾。
>>> []         # 同样输出为空列表。

>>>a[:6]        # step=1,从左往右取值,从"起点"开始一直取到end_index=6。
>>> [0, 1, 2, 3, 4, 5]

>>>a[:6:-1]      # step=-1,从右往左取值,从"终点"开始一直取到end_index=6。
>>> [9, 8, 7]

>>>a[6:]        # step=1,从左往右取值,从start_index=6开始,一直取到"终点"。
>>> [6, 7, 8, 9]

>>>a[6::-1]      # step=-1,从右往左取值,从start_index=6开始,一直取到"起点"。
>>> [6, 5, 4, 3, 2, 1, 0]

参考:

Python中的切片(详细篇)学起来喔_python切片-CSDN博客

新手入门------深入理解Python切片操作 - 知乎

相关推荐
您^_^6 分钟前
DeepSeek-Harness 升级排障完全指南:三类本地残留逐个拆解
人工智能·windows·个人开发·deepseekharness·deepseekv4pro
MSTcheng.31 分钟前
【Linux】Linux学习第三弹——Linux基本指令2
linux·windows·学习·ubuntu·操作系统
还是大剑师兰特2 小时前
Windows Redis 完整下载‑安装‑配置教程
windows·redis
水饺编程3 小时前
第5章,[Win32 章节] :练习程序,BigFontPic
c语言·c++·windows·visual studio
jyOverQ16 小时前
ChatGPT Windows 客户端点击无反应、有进程却没窗口?一次 MSIX 非系统盘启动卡死的完整排查
windows·chatgpt
还是大剑师兰特19 小时前
MySQL8.0 Windows完整安装教程
windows·mysql·大剑师
redfred21 小时前
HandBrake 使用教程:开源视频压缩工具 视频太大压缩 MKV转MP4 批量转码 硬件加速 Windows/macOS/Linux
windows·开源·音视频
kakakahahahaha21 小时前
【Windows】C盘拒绝访问0x80070005的7步排查
windows·电脑·内容运营·软件需求
万年咸鱼1 天前
Java ArrayList 详解:原理、用法与实战
java·开发语言·windows
奈斯先生Vector1 天前
本地图片识别怎么接入多模态 AI?用 Python API 理解 GPT-4o Vision 的真实工作流
开发语言·人工智能·windows·python·网络协议·http·aigc