楼主: 王同学_
324 0

[其他] Python切片总结 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

40%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20 点
帖子
1
精华
0
在线时间
0 小时
注册时间
2018-5-28
最后登录
2018-5-28

楼主
王同学_ 发表于 2025-12-12 11:37:07 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

在Python中,索引和切片是操作序列类型(如列表、字符串等)的核心手段。我们首先从最基本的索引方式入手:使用单个整数进行索引。对于一个已定义的序列a,其基本语法为a[index],其中index表示元素的位置下标。

尽管这一概念看似简单,但Python提供了一个非常实用的语法特性——负数下标。当index取值为-n时,表示访问倒数第n个元素。例如,a[-1]对应最后一个元素,a[-2]则指向倒数第二个元素,以此类推。为了更清晰地展示索引范围,以下表格直观呈现了各个下标所对应的元素位置。

早期版本的Python仅支持形如a[start:stop]的基本切片语法。随着语言的发展,后续引入了更为灵活的形式,即“扩展切片”:a[start:stop:step]。虽然名称上仍保留“扩展”的说法,但实际上这已是现代Python标准的一部分,无需特别关注其历史称谓。

扩展切片的核心在于新增了步长参数step,它必须是一个非零整数。该表达式的执行逻辑是从start位置开始,以step为步长逐个选取元素,直到越过stop位置为止,且不包含stop本身。值得注意的是,当step=1时,扩展切片就退化为常见的基本切片形式。

step为正数的情况

当步长step > 0时,切片按正向顺序遍历序列。此时startstop均可省略,若缺省,Python会自动填充以尽可能覆盖最大有效区间:

  • 若未指定start,默认从序列起始处(可理解为“负无穷”)开始;
  • 若未指定stop,默认延伸至序列末尾(可理解为“正无穷”)。

示例代码如下:

>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[:5]
[0, 1, 2, 3, 4]
>>> a[5:]
[5, 6, 7, 8, 9]
>>> a[100:]
[]
>>> a[0:6:2]
[0, 2, 4]
>>> a[::2]
[0, 2, 4, 6, 8]
>>> a[:-2:2]
[0, 2, 4, 6]
>>> a[4::2]
[4, 6, 8]

step为负数的情况

step < 0时,切片将按照逆序方式进行,即从高索引向低索引移动,步长大小为|step|。在这种模式下,虽然截断规则保持一致,但缺省值的处理逻辑发生变化:为了保证选取区间最大化,Python会将起始点设得尽可能大,终止点设得尽可能小。

因此,在逆序情况下:

  • 缺省的start被视为“正无穷”,即默认从末尾开始;
  • 缺省的stop被视为“负无穷”,即默认延伸到开头之前。

相关示例如下:

>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[5::-1]
[5, 4, 3, 2, 1, 0]
>>> a[:4:-2]
[9, 7, 5]
>>> a[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:python Start Index Step Stop

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-8 04:21