首先先讲下 切片的公式。 模式[start : end : step]
1.start 是切片的起始位置不填默认为0
2.end 是切片的截至位置不填默认为列表的长度
3.step是切片的跨度,也就是切片跳跃的长度,官方说法是步长,如果不指定值就是默认是1
下边的代码应该会把取值的所有情况都考虑在内了,参考下边的代码
切片取值
alist=[1,2,3,4,5,6,7,8,9]
print(alist[::]) #打印全部
print(alist[:]) #打印全部
print(alist[3::2]) #起始位置为3,截至位置为默认列表长度,步长为2,
#打印出来我猜不错的话应该是取的奇数位置。
print(alist[1:4]) #取列表位置 1 到4 (记住列表位置是从0开始)
print(alist[::-1]) # 这个要注意了, 这个比较高级 是对列表进行反转,简单吧
print(alist[1:100]) # 如果 截至位置大于列表长度取列表的长度。
print(alist[100:]) # 如果 起始位置大于列表长度取值为空
**注意以上的操作都是会新增一个列表不会修改列表**
打印结果如下:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[4, 6, 8]
[2, 3, 4]
[9, 8, 7, 6, 5, 4, 3, 2, 1]
[2, 3, 4, 5, 6, 7, 8, 9]
[]
切片赋值
想要修改切片的列表就要看下边的。
alist=[1,2,3,4,5,6,7,8,9]
print(len(alist))
print(alist[0])
alist[len(alist):]=[10] #在尾部增加列表
alist[:0]=[0] #在开始位置前增加列表
alist[2:2]=[100] #在3位置插入列表
---------------------------------------------------------------------------------------------------------------------------
(当我们打印 print[2:2] 一定为空 ,这个大部分人可能都不大清楚我来解释下 )
alist=[1,2,3,4,5,6,7,8,9]
print(alist[3:4])
#打印的结果为 [4]
#解释下3 是指起始位置坐标为3由于坐标开始是0,所以应该取的是[4]
#4 的意思是指起始位置到截至的长度为4 ,他是从1开始的,所以取的也是[4]
#同理我们要打印
print(alist[3,3])
#是找不到值的
#解释下第一个3 是指起始位置坐标为3由于坐标开始是0,所以应该取的是[4]
#第二个3 的意思是指起始位置到截至的长度为4 ,他是从1开始的,所以取的也是[3], 当打印 alist[3,3] 起始和截至不匹配所以取不到值
#但是我们可以拿这个alist[3:3]进行赋值,意思就是在起始3位置插入列表 ,就像alist[:0] 在开始位置新增值一样。
--------------------------————————————————————————————————
alist[:8]=[12] #初始位置到7 都变成【12】
print(alist)
alist[2:]=[13] #从第三个位置到结尾 变成【13】
--------------------------------------------------------------------------------------------------------------------------
alist=[1,2,3,4,5,6,7,8,9]
alist[::2]=[0]*5 #隔一个进行修改,
print(alist)
[0, 2, 0, 4, 0, 6, 0, 8, 0]
注意要修改的数量要和右边的等号相等 如果不等就报错
alist=[1,2,3,4,5,6,7,8,9]
alist[::2]=[0]*4
print(alist)
#ValueError: attempt to assign sequence of size 4 to extended slice of size 5
-------------------------------------------------------------------------------------------------------------------------------
alist=[1,2,3,4,5,6,7,8,9]
alist[:3]=[] #删除前三个元素
print(alist)
del alist[:3] #用del 删除前三个
print(alist)
-------------------------------------------------------------------------------------------------------------------------------------------
alist=[1,2,3,4,5,6,7,8,9]
del alist[::2]
print(alist) #奇数位置都要删除
[2, 4, 6, 8]
切片的功能非常的强大,熟悉了能省略几十行代码,别不信。