当前位置:首页>python>从零开始学python-切片

从零开始学python-切片

  • 2026-10-16 18:58:16
从零开始学python-切片

Hi~新朋友,记得点上面蓝字(网虫root)关注哟~

前言:

   主要分享的是Python版本为Python3的内容。

一、切片的作用

切片以简洁、高效的方式从序列类型(如列表、元组、字符串)中获取子序列,无需循环即可完成复杂的数据操作。

  • 简洁性:用一行代码替代多行循环

  • 可读性:直观表达"取某一部分数据"的意图

  • 灵活性:支持正负索引、步长等高级操作

  • 高效提取子序列:快速获取序列的任意子集(如前N个元素、每隔N个元素等)。

  • 创建新对象:切片返回新序列(原序列不变),避免意外修改原始数据。

💡 为什么重要?

例如:从100万条数据中提取前1000条,切片只需一行代码,而循环需1000次迭代。

二、切片的语法

sequence[start:stop:step]sequence:待切片的序列(列表、元组、字符串等)。start:起始索引(包含),默认为0。stop:结束索引(不包含),默认为序列长度。step:步长(间隔),默认为1。

📌 关键规则:

  1. 左闭右开:[start, stop),即包含start,不包含stop。

  2. 负数索引:-1表示最后一个元素,-2表示倒数第二个,依此类推。

  3. 步长为负:表示反向切片(需注意start和stop的顺序)。

三、参数详解与说明

⚠️ 注意事项:

  • 当step为负时,start默认为最后一个元素,stop默认为第一个元素的前一个位置。

  • 索引超出范围时,Python自动截断(不会报错,返回空或有效部分)。

🔍索引编号系统

正索引:  0   1   2   3   4   5   6   7   8   9序列:   [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]负索引: -10  -9  -8  -7  -6  -5  -4  -3  -2  -1

⚙️参数特性说明

  • start和stop的默认行为

创建示例列表nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]start默认为0,stop默认为len(序列)nums[:]      # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - 完整拷贝nums[3:]     # [3, 4, 5, 6, 7, 8, 9] - 从索引3到末尾nums[:7]     # [0, 1, 2, 3, 4, 5, 6] - 从开始到索引7(不含)nums[3:7]    # [3, 4, 5, 6] - 从索引3到7(不含)
  • 负索引的使用

nums[-3:]     # [7, 8, 9] - 最后三个元素nums[:-3]     # [0, 1, 2, 3, 4, 5, 6] - 除最后三个外的所有元素nums[-5:-2]   # [5, 6, 7] - 从倒数第5个到倒数第2个(不含)
  • 步长step的控制

nums[::2]     # [0, 2, 4, 6, 8] - 所有偶数索引元素nums[1::2]    # [1, 3, 5, 7, 9] - 所有奇数索引元素nums[2:8:3]   # [2, 5] - 从索引2到8,每隔3个取一个

四、实用示例

1. 基础切片(正向)

my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]提取索引1到4(不包含4)的元素print(my_list[1:4])  # 输出: [1, 2, 3]从开头到索引3(不包含3)print(my_list[:3])   # 输出: [0, 1, 2]从索引5到末尾print(my_list[5:])   # 输出: [5, 6, 7, 8, 9]整个序列(复制)print(my_list[:])    # 输出: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

2. 带步长的切片

步长为2(每隔1个元素取1个)print(my_list[::2])  # 输出: [0, 2, 4, 6, 8](从0开始,步长2)从索引1开始,步长2print(my_list[1::2]) # 输出: [1, 3, 5, 7, 9]步长为-1(反转序列)print(my_list[::-1]) # 输出: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

3. 负数索引切片

从倒数第3个元素到末尾print(my_list[-3:])  # 输出: [7, 8, 9](-3对应索引7)从开头到倒数第2个元素(不包含)print(my_list[:-2])  # 输出: [0, 1, 2, 3, 4, 5, 6, 7](倒数第2个是8,不包含)反向切片:从倒数第2个到倒数第5个(步长-1)print(my_list[-2:-5:-1]) # 输出: [8, 7, 6](注意:start > stop 时需用负步长)

4. 字符串切片(与列表同理)

s = "Hello, World!"print(s[0:5])        # 输出: "Hello"(索引0-4)print(s[7:])         # 输出: "World!"(从索引7开始)print(s[::-1])       # 输出: "!dlroW ,olleH"(反转字符串)

五、切片应用总结表

✨ 一句话掌握:

“切片 = 起始位置 + 结束位置 + 步长,左闭右开,负数索引从末尾计数。”

【微语】别怕慢,只要不停,终会到达。

网虫root

期待你的

分享

点赞

在看

最新文章

随机文章