如何简化Python中大量的if语句?附场景示例代码
如何简化Python中大量的if语句?
针对你给出的场景——根据列表元素是否为1来打印对应语句,最简洁的方式是将数据与逻辑分离,用映射关系替代重复的if判断,同时通过函数复用重复逻辑。
方案一:用列表映射索引与消息
因为你的索引是连续的0-4,直接用列表对应索引和消息最直观:
# 定义每个列表对应的消息列表,索引与原代码一一对应 s_messages = [ "you are a !", "high !", "jj", "dkkdkd", "kkkk" ] w_messages = [ "you are a low!", "low !", "jj", "dkkdkd", "kkkk" ] # 通用处理函数 def print_matching_messages(target_list, message_list): for index, value in enumerate(target_list): if value == 1: print(message_list[index]) # 处理s列表 print_matching_messages(s, s_messages) # 处理w列表 print_matching_messages(w, w_messages)
方案二:用字典映射索引与消息
如果后续索引可能不连续,或者需要更灵活的映射,用字典更合适:
# 定义索引到消息的映射 s_msg_map = { 0: "you are a !", 1: "high !", 2: "jj", 3: "dkkdkd", 4: "kkkk" } w_msg_map = { 0: "you are a low!", 1: "low !", 2: "jj", 3: "dkkdkd", 4: "kkkk" } def print_matching_messages(target_list, msg_map): for index, value in enumerate(target_list): if value == 1: # 用get避免索引不存在时报错,可自定义默认值 print(msg_map.get(index, "")) print_matching_messages(s, s_msg_map) print_matching_messages(w, w_msg_map)
为什么这么做?
- 减少重复代码:原来的重复if判断被统一的循环和映射替代,新增索引或修改消息只需修改映射列表/字典,不用加新的if语句。
- 逻辑清晰:数据(消息)和逻辑(判断+打印)分离,代码可读性更强。
- 复用性高:通用函数可以处理任意类似结构的列表和消息映射,不用重复写判断逻辑。
内容的提问来源于stack exchange,提问作者Noha Alarifi
相关产品推荐
相关产品推荐

