切片操作的语法格式:
列表名[ start : stop : step ]
1.切片的结果:原列表片段的拷贝(会产生新的列表对象):
lst = [10,20,30,40,50,60,70,80]
#切片为:start=2 , stop=6 , step=1
lst2 = lst[2:6:1]
print(lst2) #[30, 40, 50, 60]
print('原列表id:%d'%id(lst)) # 20304008
print('切片后新列表id;%d'%id(lst2)) # 68414536
2.step默认为1,简写为 [start : stop]
# 省略step
print(lst[1:6:]) # [20, 30, 40, 50, 60]
print(lst[1:6]) # [20, 30, 40, 50, 60]
print(lst[1:6:2]) # [20, 40, 60]
3.step为正数:(从start往前开始切片)
- [ : stop : step]:切片的第一个元素默认是列表的第一个元素
- [start : : step]:切片的最后一个元素默认是列表的最后一个元素
# 省略start
print(lst[:6:1]) # [10, 20, 30, 40, 50, 60]
# 省略stop
print(lst[1::2]) # [20, 40, 60, 80]
4.step为负数:(从start往左开始切片,step为-1,从右往左执行切片,从start开始,stop结束)
- [start : : step]:列表的最后一个元素默认是新列表的第一个元素
- [: stop : step]:列表的第一个元素默认是新列表的最后一个元素
- [ : : -1 ]:列表倒序
# 从start开始(包含start),向左切片,截止到stop(不包含stop)
a = [1,2,3,4,5,6,7,8,9]
## step = -1时,start在前,stop在后,切片结果为空
a[1:3:-1] # []
a[1:-3:-1] # []
## step = -1时,start在后,stop在前时才能切片
a[-1:-3:-1] # [9, 8]
a[-1:3:-1] # [9, 8, 7, 6, 5]
a[:-3:-1] # [6, 5]
a[6:3:-1] # [7, 6, 5]