如何简化Python中多列表的重复循环代码?
简化重复Python循环的方案
你的代码存在大量重复逻辑,可以通过封装重复逻辑为函数+批量处理变量对的方式大幅简化,甚至可以通过一次外层循环完成所有原循环的工作,以下是具体实现:
方案一:封装函数+批量处理(推荐)
首先将重复的判断和修改逻辑封装成函数,避免多次编写相同代码;再将需要配对处理的列表与字典放入一个集合中,通过一次循环遍历完成所有处理:
# 封装重复逻辑为函数 def update_dict_with_flag(target_list, target_dict): # 使用enumerate替代range(len(...)),更符合Python风格 for idx, item in enumerate(target_list): if item == "AU": # 用f-string替代字符串拼接,更简洁高效 target_dict[idx] = f"{target_dict[idx]} not" # 将需要处理的列表和字典一一配对 process_pairs = [(list1, d1), (list2, d2), (list3, d3), (list4, d4), (list5, d5)] # 一次循环处理所有配对 for lst, dct in process_pairs: update_dict_with_flag(lst, dct) # 批量打印结果 for dct in [d1, d2, d3, d4, d5]: print(str(dct))
方案二:无函数的简化写法
如果不想额外定义函数,也可以将逻辑直接嵌入批量循环中,同样能大幅缩短代码:
process_pairs = [(list1, d1), (list2, d2), (list3, d3), (list4, d4), (list5, d5)] # 一次外层循环处理所有原循环的工作 for lst, dct in process_pairs: for idx, item in enumerate(lst): if item == "AU": dct[idx] = f"{dct[idx]} not" # 简化打印逻辑 print('\n'.join(map(str, [d1, d2, d3, d4, d5])))
关键优化点说明
- 用
enumerate替代range(len(...)):直接同时获取索引和元素,代码更简洁易读 - 用f-string替代字符串拼接:语法更简洁,执行效率更高
- 批量处理变量对:消除重复代码,后续新增类似处理只需在
process_pairs中添加新的配对即可,维护成本更低
内容的提问来源于stack exchange,提问作者SUDEM S DAIMARI
相关产品推荐
相关产品推荐

