如何为列表中大于0的元素及指定索引元素添加数值?
解决列表元素批量更新的问题
嘿,这问题我熟!你需要同时完成两个操作:给列表里所有大于0的元素加上指定数值,另外不管指定索引位置的元素当前值是啥,都要给它加同样的数值对吧?你之前只能处理指定索引的问题,我来给你搞定。
先看你的示例:
原列表:
LstA = [1,0,3,0,0,2,0,0,0,0]
指定索引index=6,要加的数值是2
期望结果:new_list = [3,0,5,0,0,4,2,0,0,0]
简洁实现方式(列表推导式)
用Python的列表推导式一行就能搞定,既高效又清晰:
LstA = [1,0,3,0,0,2,0,0,0,0] add_value = 2 target_index = 6 new_list = [num + add_value if (num > 0 or idx == target_index) else num for idx, num in enumerate(LstA)]
分步解释
enumerate(LstA)会帮我们同时获取每个元素的索引和对应的值- 判断条件
num > 0 or idx == target_index:只要元素大于0,或者当前元素的索引是我们指定的target_index,就给它加上add_value - 不满足条件的元素保持原数值不变
新手友好的循环写法
如果你觉得列表推导式有点绕,也可以用普通循环来实现,逻辑是一样的:
LstA = [1,0,3,0,0,2,0,0,0,0] add_value = 2 target_index = 6 new_list = [] for idx, num in enumerate(LstA): if num > 0 or idx == target_index: new_list.append(num + add_value) else: new_list.append(num)
运行上面任意一段代码,都能得到你想要的结果[3,0,5,0,0,4,2,0,0,0]。
内容的提问来源于stack exchange,提问作者martinj14
相关产品推荐
相关产品推荐

