我经常遇到这样的情况,我想在满足条件以及循环结束时在循环内执行代码块。我通常通过索引/枚举或复制和粘贴来解决这个问题。我想知道是否有一种更内置的方式来处理此问题,类似于do while
循环(我确实知道Python没有)。在下面的示例中,我想在条件失败时以及完成列表迭代后都调用一个函数。
y = []
for num in x:
if condition:
y.append(num)
else:
function_call(y)
y = []
function_call(y)
答案 0 :(得分:1)
首先,我会发现断言在开始时失败的情况,然后,如果条件有效,则进行处理:
y = []
for num in x:
if not condition:
function_call(y)
y = []
continue
y.append(num)
function_call(y)
这样,后备是明确的。
然后,如果您想避免最后一个块,可以想像这样的解决方法,但是必须谨慎行事,因为它无助于保持代码的可读性:
y = []
for num in x + [None]: # I assume `x` is a list?
if not condition or num is None:
function_call(y)
y = []
continue
y.append(num)
答案 1 :(得分:1)
您可以使用相同的方法来解决此问题,并且如果function_call
所表示的代码很长,则可以使它具有如下功能:
之前:
y = []
for num in x:
if condition:
y.append(num)
else:
function_call_1(y)
function_call_2(y)
function_call_3(y)
function_call_4(y)
function_call_5(y)
y = []
function_call_1(y)
function_call_2(y)
function_call_3(y)
function_call_4(y)
function_call_5(y)
之后:
def function_call(arg):
function_call_1(arg)
function_call_2(arg)
function_call_3(arg)
function_call_4(arg)
function_call_5(arg)
y = []
for num in x:
if condition:
y.append(num)
else:
function_call(y)
y = []
function_call(y)