本人在用python写程序时用到切片时常常犯相同错误,所以写成博客以提醒自己:
#创建列表
num = [1,2,3,4,5,6]
print(num)
#给列表某单个索引对应的值进行重新赋值
num[2] = 0
print(num)
输出结果为:
[1,2,3,4,5,6]
[1,2,0,4,5,6]
给列表某单个索引对应的值重新赋值时很简单,一般没问题,但用到给列表的切片赋值时经常犯下面的错误:
num[2:4] = 0
输出结果报错:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only assign an iterable
错误提示赋值的值不是一个迭代值
我想了很久,后来我想通了,由于我给切片赋值,切片本身是一个列表,而我赋予的值是一个常数,所以造成语法错误。因此:正确的切片赋值的方法是:
num[2:4] = [0]
这些写才不会报错,可以达到想要的输出结果:
[1,2,0,0,0,6]
下面再拓展一下切片赋值的内容:
给切片赋予不同的值:
num = [1,2,3,4,5,6]
print(num)
num[0:3]=[4,5,6]
输出结果为:
[1,2,3,4,5,6]
[4,5,6,4,5,6]
但是,如果切片有3个数,但赋值只有两个数,那么切片的第三个数就赋值为空,从原列表中删除。可以通过以下程序了解:
num = [1,2,3,4,5,6]
print(num)
#赋值列表只有两个数
num[0:3]=[4,5]
输出结果为:
[1,2,3,4,5,6]
[4,5,4,5,6]