切片语法[::-1]及其可用的类型
Python 切片通用格式:
sequence[start:stop:step]
start:切片开始索引(包含该索引的元素)。
stop:切片结束索引(不包含该索引的元素)。
step:步长,默认是
1
,也可以是负数表示反向切片。
如果省略某个值,就用默认值:
start
省略 → 默认从序列开头(或末尾,如果 step 为负数)stop
省略 → 默认到序列末尾(或开头,如果 step 为负数)step
省略 → 默认1
示例:
lst = [0, 1, 2, 3, 4]print(lst[1:4]) # [1, 2, 3],索引 1 到 3
print(lst[:3]) # [0, 1, 2],从开头到索引 2
print(lst[2:]) # [2, 3, 4],从索引 2 到末尾
print(lst[::2]) # [0, 2, 4],步长为 2
print(lst[::-1]) # [4, 3, 2, 1, 0],步长为 -1,相当于反转列表
--切片用在序列中,即索引是整数的--
1. 列表(list)
lst = [10, 20, 30, 40, 50]
print(lst[1:4]) # [20, 30, 40]
print(lst[::-1]) # [50, 40, 30, 20, 10]
2. 元组(tuple)
t = (1, 2, 3, 4)
print(t[:2]) # (1, 2)
print(t[::-1]) # (4, 3, 2, 1)
3. 字符串(str)
s = "hello"
print(s[1:4]) # "ell"
print(s[::-1]) # "olleh"
4. 字节串(bytes / bytearray)
b = b"abcdef"
print(b[1:4]) # b'bcd'
print(b[::-1]) # b'fedcba'
5. 自定义类实现了 __getitem__
只要类实现了 __getitem__
方法,并且支持切片对象(slice),就可以用切片:
class MySeq:def __getitem__(self, key):return key
seq = MySeq()
print(seq[1:5:2]) # slice(1, 5, 2)
✅ 注意:
字典和集合不能直接切片,因为它们是无序集合,没有整数索引。
切片返回的是 同类型的子序列(列表、元组、字符串),但如果是
bytes
切片,返回的是bytes
。