循环结束时执行代码块的正确方法

2024-05-02 03:18:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我经常遇到这样一种情况:当一个条件被满足时,以及当循环完成时,我想在循环中执行一个代码块。我通常通过索引/枚举或复制和粘贴来解决这个问题。我想知道是否有更内置的方法来处理这个问题,有点像do while循环(我知道Python没有)。在下面的例子中,每当条件失败时,当我们完成对列表的迭代时,我都要调用一个函数。你知道吗

y = []
for num in x:
    if condition:
        y.append(num)
    else:
        function_call(y)
        y = []
function_call(y)

Tags: 方法函数代码列表for粘贴情况function
2条回答

你可以用同样的方法来解决这个问题,如果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)

首先,我将捕捉断言在开始时失败的情况,然后如果条件有效,则处理:

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)

相关问题 更多 >