如何紧凑实现:满足条件执行三层loop,否则仅执行内层两层循环?
紧凑实现条件式三层/两层循环
针对你提出的需求,Python里可以通过构造外层循环的迭代对象或者封装内层逻辑为函数的方式实现紧凑写法,避免重复编写内层循环代码:
方法1:条件表达式生成外层迭代器
通过条件表达式,让外层循环在条件不满足时迭代一个仅含单个占位元素的序列(比如[None]),这样外层循环只会执行一次,等价于直接进入内层循环:
# 条件满足时遍历loop1,否则仅执行一次外层循环(跳过i1的遍历逻辑) for i1 in loop1 if condition else [None]: for i2 in loop2: for i3 in loop3: do_sth() # 若不需要i1,直接忽略该变量即可
如果你的do_sth需要用到i1,也可以正常传递,条件不满足时i1会是None,根据实际逻辑处理即可。
方法2:封装内层循环为函数
把重复的内层两层循环逻辑封装成函数,通过条件判断决定是否在外层循环中调用函数,代码更清晰且无冗余:
def process_inner(): for i2 in loop2: for i3 in loop3: do_sth() # 根据条件决定是否在外层循环中调用 if condition: for i1 in loop1: process_inner() else: process_inner()
如果需要传递i1给内层逻辑,只需给函数加参数:
def process_inner(current_i1=None): for i2 in loop2: for i3 in loop3: do_sth(current_i1, i2, i3) # 同样用条件表达式简化外层循环 for i1 in loop1 if condition else [None]: process_inner(i1)
说明
Python本身没有你构想的那种直接skip go to next inner loop的语法,但上述两种方式都能实现你要的逻辑,同时保持代码紧凑、避免重复。
内容的提问来源于stack exchange,提问作者PTQuoc
相关产品推荐
相关产品推荐

