使用切片将列表奇数索引元素转负数时遇ValueError报错求解
问题解决:切片赋值时的ValueError错误
你的代码l[1::2] = -1 * l[1::2]之所以报错,核心原因是Python中列表与负数相乘会返回空列表。比如当l[1::2]是[2,4]时,-1 * [2,4]得到的是[],而你左边的切片l[1::2]有2个元素,空列表的长度和切片长度不匹配,就触发了ValueError: attempt to assign sequence of size 0 to extended slice of size 2。
正确实现方式
- 使用列表推导式逐个对奇数索引元素取负:
l[1::2] = [-x for x in l[1::2]] - 或者用
map配合匿名函数实现:l[1::2] = map(lambda x: -x, l[1::2])
举个测试例子:
l = [1, 2, 3, 4, 5] l[1::2] = [-x for x in l[1::2]] print(l) # 输出: [1, -2, 3, -4, 5]
内容的提问来源于stack exchange,提问作者user20250841
相关产品推荐
相关产品推荐

