切片专题
切片是 Python 里最好用、也最值得早点熟悉的语法之一。它不仅能取子序列,还能反转、跳步、浅拷贝,很多代码写顺以后会非常自然。
基本语法
sequence[start:stop:step]
start:开始位置,包含stop:结束位置,不包含step:步长
最常见的几种写法
nums = [0, 1, 2, 3, 4, 5]
print(nums[1:4]) # [1, 2, 3]
print(nums[:3]) # [0, 1, 2]
print(nums[3:]) # [3, 4, 5]
print(nums[::2]) # [0, 2, 4]
print(nums[::-1]) # [5, 4, 3, 2, 1, 0]
负索引
text = "abcdef"
print(text[-1]) # f
print(text[-3:]) # def
负索引从末尾开始数,很适合处理“最后几个元素”。
切片不仅能读,也能改
nums = [0, 1, 2, 3, 4, 5]
nums[1:4] = [10, 20, 30]
print(nums)
也可以删掉一段:
del nums[2:4]
常见用途
1. 浅拷贝列表
copied = nums[:]
2. 反转序列
reversed_text = text[::-1]
3. 每隔几个取一次
evens = nums[::2]
一个容易忽略的点
切片通常会返回新对象,但“是不是完全独立”还要看序列里的元素本身是否可变。更具体的例子可以看:
我的速记方式
[:n]:前n个[n:]:从n到结尾[-n:]:最后n个[::k]:每隔k个取一次[::-1]:反转