python:关于切片赋值时经常犯的语法错误

本人在用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]
  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值