文章目录前言一、先搞懂Python 切片到底是什么二、基础切片只写 start 和 end2.1 最基础从 start 切到 end2.2 省略 start从头开始切2.3 省略 end切到末尾2.4 全都省略复制整个序列三、负数索引从右边数超级好用3.1 取最后 n 个元素3.2 去掉最后 n 个元素3.3 中间一段用负数四、步长 step跳跃式切片真正的骚操作4.1 正步长从左往右跳4.2 步长为 -1**直接倒序**4.3 步长为负从右往左切五、切片常见组合工作中高频场景5.1 取前 n 个元素5.2 取后 n 个元素5.3 去掉前 k 个取后面所有5.4 去掉后 k 个取前面所有5.5 列表浅拷贝5.6 奇偶下标分离5.7 字符串按步长采样5.8 深度学习中常用批量取前N条数据六、必踩的 5 个坑99% 新手都中招坑1end 不包含自身永远记不住坑2start end 且 step 为正 → 空列表坑3负数步长时start end → 空坑4切片越界不会报错坑5切片是新对象不是原序列七、进阶切片对象 slice()代码更优雅八、实战案例用切片简化真实业务代码案例1取列表前5个倒序输出案例2字符串去除首尾各2个字符再反转案例3AI数据集按步长采样减少计算量九、2026 年最新 Python 切片规范与技巧十、总结一张表记住 [start:end:step] 所有规则P.S. 目前国内还是很缺AI人才的希望更多人能真正加入到AI行业共同促进行业进步增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow教程通俗易懂高中生都能看懂还有各种段子风趣幽默从深度学习基础原理到各领域实战应用都有讲解我22年的AI积累全在里面了。注意教程仅限真正想入门AI的朋友否则看看零散的博文就够了。前言很多刚学Python的朋友一上来就被[start:end:step]这套切片语法搞得头大。看着简单三个参数组合起来花样百出正数、负数、空着不写、倒序、步长跳跃……明明一行代码能搞定的事硬是写出了阅读理解的感觉。我见过太多新手循环写了几十行只为取列表前几个元素、倒序输出、隔一个取一个。殊不知Python切片一出这些操作全是一行秒杀。2026年了Python早已是AI、数据分析、后端开发的绝对主力语言切片更是日常编码里出场率最高的语法之一。不管是处理数据集、字符串清洗、数组裁剪还是深度学习里的张量维度截取都离不开它。今天这篇文章我就用最通俗、最接地气的方式把[start:end:step]从入门到精通彻底讲透。不讲虚的全是真实可跑的代码全是工作里真能用得上的技巧看完你再也不会被切片绕晕。一、先搞懂Python 切片到底是什么一句话切片就是从序列列表、字符串、元组、range、张量等里按规则「抠出一段子序列」的语法。Python里所有可迭代、有序、支持下标访问的对象基本都支持切片list 列表str 字符串tuple 元组bytes / bytearraynumpy arraytorch tensor深度学习常用它的标准语法只有一种死记这一个模板就行序列[start:end:step]三个参数含义极简版start从哪里开始切包含end切到哪里结束不包含step步长每隔几个取一个可正可负最关键的坑点end 是开区间不包含自身这是90%新手翻车的地方。二、基础切片只写 start 和 end先从最简单的情况入手只写[start:end]默认step1也就是挨个取。我们先定义一个测试列表后面所有例子都用它方便对照# 索引 0 1 2 3 4 5 6 7 8nums[10,20,30,40,50,60,70,80,90]2.1 最基础从 start 切到 end# 从索引1开始到索引4结束不包含4print(nums[1:4])# [20, 30, 40]结果只有索引1、2、3没有4记住左闭右开。2.2 省略 start从头开始切[:end]等价于[0:end]print(nums[:5])# 从开头到索引5不含[10,20,30,40,50]2.3 省略 end切到末尾[start:]切到最后一个元素包含末尾print(nums[3:])# 从索引3到最后 [40,50,60,70,80,90]2.4 全都省略复制整个序列[:]是Python里浅拷贝列表最常用的写法print(nums[:])# [10,20,30,40,50,60,70,80,90]在AI数据处理里data[:]经常用来复制一份数据避免修改原数组。三、负数索引从右边数超级好用Python支持负数下标这是切片灵活性的关键之一。规则-1最后一个元素-2倒数第二个以此类推还是用上面的列表# 索引 0 1 2 3 4 5 6 7 8# 负索引:-9 -8 -7 -6 -5 -4 -3 -2 -1nums[10,20,30,40,50,60,70,80,90]3.1 取最后 n 个元素print(nums[-3:])# 最后3个 [70,80,90]3.2 去掉最后 n 个元素print(nums[:-2])# 去掉最后2个 [10,20,30,40,50,60,70]3.3 中间一段用负数print(nums[-5:-2])# 从-5到-2不含[50,60,70]很多AI数据集处理、字符串截断用负数索引一行搞定比写len()计算清爽太多。四、步长 step跳跃式切片真正的骚操作step是切片的灵魂默认是1改成其他整数就变成每隔step个取一个。格式[start:end:step]4.1 正步长从左往右跳print(nums[::2])# 从头到尾步长2[10,30,50,70,90]print(nums[1::3])# 从1开始步长3[20,50,80]在处理时序数据、特征采样时::2降采样非常常用。4.2 步长为 -1直接倒序这是Python最经典的技巧print(nums[::-1])# [90,80,70,60,50,40,30,20,10]字符串反转同样一行sabcdefprint(s[::-1])# fedcba比写循环、用reverse()优雅太多而且不修改原对象。4.3 步长为负从右往左切当step0时start要大于end否则返回空列表。print(nums[6:1:-1])# 从6到1不含倒着取 [70,60,50,40,30]你可以理解为step 正左 → 右step 负右 → 左五、切片常见组合工作中高频场景我把2026年实际编码里最常用的切片场景整理出来直接背直接用。5.1 取前 n 个元素nums[:n]5.2 取后 n 个元素nums[-n:]5.3 去掉前 k 个取后面所有nums[k:]5.4 去掉后 k 个取前面所有nums[:-k]5.5 列表浅拷贝new_numsnums[:]5.6 奇偶下标分离evennums[::2]# 偶数下标 0,2,4...oddnums[1::2]# 奇数下标 1,3,5...5.7 字符串按步长采样sABCDEFGHIJKprint(s[::3])# ADGJ5.8 深度学习中常用批量取前N条数据# 假设batch_data是模型输入数据batchbatch_data[:32]# 取前32条样本这些都是AI工程、数据处理里天天写的代码学会切片代码直接精简一半。六、必踩的 5 个坑99% 新手都中招坑1end 不包含自身永远记不住nums[2:5]# 取 2,3,4没有5解决办法想要到索引x就写endx1坑2start end 且 step 为正 → 空列表print(nums[5:2])# []不会报错直接空很容易埋bug。坑3负数步长时start end → 空print(nums[2:6:-1])# []倒着切必须左边下标 右边下标。坑4切片越界不会报错Python非常宽容print(nums[100:200])# []print(nums[:1000])# 全部输出不会抛IndexError这点和直接取下标不同。坑5切片是新对象不是原序列a[1,2,3]ba[:]b[0]999print(a)# [1,2,3] 没变切片是浅拷贝这在数据处理里非常重要避免误改原始数据。七、进阶切片对象 slice()代码更优雅除了直接写[::]Python还提供内置函数slice(start, end, step)适合复用切片规则。# 定义一个切片规则从1到7步长2sslice(1,7,2)print(nums[s])# [20,40,60]在工程代码里把固定切片逻辑封装成slice对象可读性暴增。比如深度学习里固定裁剪特征crop_featureslice(5,20)feat1data1[crop_feature]feat2data2[crop_feature]八、实战案例用切片简化真实业务代码我给你看两段对比你就知道切片有多香。案例1取列表前5个倒序输出不用切片nums[1,2,3,4,5,6,7,8,9]tempnums[:5]temp.reverse()print(temp)用切片一行print(nums[:5][::-1])案例2字符串去除首尾各2个字符再反转sABCDEFGHIJK# 切片版ress[2:-2][::-1]print(res)案例3AI数据集按步长采样减少计算量# 时序数据每5个点取1个datatorch.randn(1000)sampledata[::5]代码少、速度快、可读性强这就是Pythonic。九、2026 年最新 Python 切片规范与技巧根据2026年Python官方风格指南PEP 8以及AI工程实践有几条最佳实践尽量省略多余的0推荐nums[:5]不写nums[0:5]尽量用负数索引处理尾部推荐nums[-3:]不写nums[len(nums)-3:]步长不要写太复杂多层嵌套切片尽量拆成两行避免可读性爆炸张量/数组优先用切片少用循环numpy、torch底层对切片做了极致优化比Python循环快几十倍函数参数里支持切片时优先封装slice对象让接口更清晰便于维护十、总结一张表记住 [startstep] 所有规则写法含义a[:]复制整个序列a[n:]从n到末尾a[:n]从头到n不含a[n:-m]从n到倒数m不含a[::k]从头到尾步长ka[::-1]倒序序列a[n:m:k]从n到m步长ka[m:n:-1]倒着从m到nmn记住三句话左闭右开end不含负数从右数-1是最后步长正负定方向负步长要倒着写只要吃透这三点Python切片对你来说就再也没有难题。不管是日常开发、数据清洗还是深度学习张量操作切片都是你最顺手的工具之一。2026年写Python还在写循环取元素真的有点跟不上时代了。P.S. 目前国内还是很缺AI人才的希望更多人能真正加入到AI行业共同促进行业进步增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow教程通俗易懂高中生都能看懂还有各种段子风趣幽默从深度学习基础原理到各领域实战应用都有讲解我22年的AI积累全在里面了。注意教程仅限真正想入门AI的朋友否则看看零散的博文就够了。