# 会报错?
a = list(range(101))
# a[0:52:] = [] #这行代码不会报错
# del a[::2] #这行代码不会报错
a[::2] = [] # 这行代码会报错
print(a)
2 回答
已采纳
丵啚
TA贡献2条经验 获得超0个赞
从报错来看,是切片元素数与替换元素数不相等,也就是说,当你采用a[::2]时,切片元素为50个左右,而你的替换元素为空(为空也代表一个替换元素),而你采用a[0:52:]时,由于你第三个参数为空,默认为选取从0到52的这一整个数组也就是切片为1,所以替换时不报错,当你将第三个参数赋值为大于1的数时(当你赋值为1时,同样成功,因为同样代表了选取整个数组),同样报错,你可以试一下
希望我的回答可以帮助到你
源小猿
TA贡献9条经验 获得超1个赞
a[::2]是一个表达式,它会产生一个列表对象,由于是一个列表对象而不是一个变量,也就是说产生的是不可变的东西,怎么能把后面的值赋给它呢?它自身就会产生一个值,这就像2=3这样的语句,当然会报错阿
添加回答
举报
0/150
提交
取消