Python按条件修改列表元素报'int'对象不可下标是什么原因
问题排查
- 报错的根本原因是赋值逻辑错误:你在条件分支中写的
x = 0是把整个x变量从列表类型重写为整数0,而非修改列表的指定位置元素。 - 第一次触发条件(也就是i=3,x[i]为4的时候)执行完
x = 0后,下一轮循环要读取x[i]时,x已经是整数,整数不支持下标访问,就触发了'int' object is not subscriptable的报错。
修正代码
你只需要把赋值语句修改为对列表指定下标元素赋值即可,修改后的循环代码如下:
x = [1,2,3,4,5,6] for i in range(len(x)): if x[i] > 3: x[i] = 0
如果追求更简洁的写法,也可以用列表推导式实现:
x = [num if num <= 3 else 0 for num in [1,2,3,4,5,6]]
两种写法运行后均可得到目标列表[1,2,3,0,0,0]。
内容的提问来源于stack exchange,提问作者VTD
相关产品推荐
相关产品推荐

