Python或pandas中如何仅对列表内指定元素执行操作?
报错原因
- 首先Python整数类型没有
replace()方法,你遍历main列表拿到的o是整数,直接调用replace()本身就属于方法调用错误。 - 就算是字符串类型的
replace()方法,原生方法仅支持old、new、count三个位置参数,不支持regex关键字参数,该参数是pandas库专属的字符串处理参数,属于参数传入错误,这是你收到当前报错的直接原因。 - 你的逻辑存在结构性错误:双重循环遍历两个列表,还在循环内直接把列表变量
main赋值为单个元素的处理结果,就算没有语法错误,也会直接覆盖原列表,完全得不到预期结果。
正确实现代码
最简单的实现方式是用列表推导式:
main = [1,2,3,4,5,6,7,8,20] replace_items = [6,8,20] # 转换为集合提升查询效率,元素量少的话也可以直接用replace_items判断 replace_set = set(replace_items) main = [item * 10 if item in replace_set else item for item in main] print(main) # 输出:[1, 2, 3, 4, 5, 60, 7, 80, 200]
如果需要直接修改原列表而不是生成新列表,可以遍历索引修改:
main = [1,2,3,4,5,6,7,8,20] replace_set = set([6,8,20]) for idx in range(len(main)): if main[idx] in replace_set: main[idx] *= 10 print(main)
内容的提问来源于stack exchange,提问作者Pri D
相关产品推荐
相关产品推荐

