Python提供切片操作(slice),可以轻松的访问序列中的某段子集元素。Python常见的数据元素list,str,和bytes均提供slice操作。同时切割操作可以通过__getitem__
和__setitem__
特殊方法实现。
切割的基本操作为:
somList[start:end]
,表示的区间为左闭右开区间,即[start,end)
注意:很多语言的区间都是左闭右开
1. 当start==0
或者end==序列长度
时,可以省略
a = ['a','b','c','d','e','f']
print(a[0:2])
print(a[:2])
print(a[2:len(a)]
print(a[2:])
2.在赋值时,对左侧列表使用切割操作,会将该列表中处在指定范围内的对象替换为新值;如果左侧切片没有指定索引,那么则会被右侧列表替换掉(即使长度不同)
print('Before:',a)
a[2:5] = [2,3,4] #指定位置被修改
print('After:',a)
#################
b = a
a[:] = [2,3,4] # 被替换
assert a is b
print('After:',a)
3.如果在切割时,右侧列表的起止索引未指定,那么会产生一个原列表的拷贝
copy_list = a[:]
print(copy_list)
4.在同一切片操作中,不要同时使用start
、end
和stride
python提供someList[start:end:stride]
形式,实现步进切割,也就是说每隔stride步长取一个元素