Python列表指定元素批量替换自定义函数运行未达预期
代码排查与修正方案
核心问题定位
你当前的代码无法输出预期结果[1, 'zzz', 3, 1, 'zzz', 3],本质是两个实现层面的偏差:
- 列表类型本身不存在
replace()方法,这个方法是字符串的专属方法,直接对列表调用会触发AttributeError: 'list' object has no attribute 'replace'的运行错误,根本无法走完执行流程 - 构造仅包含单组键值对的字典、再遍历字典完成替换的逻辑完全冗余,不需要绕这层多余封装
修正后可运行的完整代码
x = [1, 2, 3, 1, 2, 3] def changeThem(x, y, z): # 遍历列表索引,找到取值为y的元素位置替换为z for idx in range(len(x)): if x[idx] == y: x[idx] = z print(x) changeThem(x, 2, 'zzz')
简洁替代实现
如果不想写索引遍历逻辑,可以通过列表推导式生成新列表完成匹配替换:
def changeThem(x, y, z): replace_res = [z if item == y else item for item in x] print(replace_res)
两种实现的运行结果完全一致,都会输出题目要求的
[1, 'zzz', 3, 1, 'zzz', 3]。
内容的提问来源于stack exchange,提问作者anon10023108
相关产品推荐
相关产品推荐

