有没有一种更干净的方法来处理(连续)for循环中的if语句?

时间:2019-05-19 20:03:16

标签: python for-loop if-statement flow-control

我是Python的新手(我只使用过C),并且发现了诸如for / else之类的新循环……所以我想知道我是否在忽略一种更干净的方式来处理该循环:

flag = 0
for i in range (n):
    if not flag and condition:
        statement_1
        flag = 1
    if flag and condition:
        statement_2

我需要保留for进行计数,因为我知道至少一个元素将满足条件,所以当我找到它时,我将执行statement_1。然后,如果另一个元素也满足条件,我将执行statement_2。

1 个答案:

答案 0 :(得分:0)

flag = False  # I prefer booleans
for i in range(n):
    if condition(i):  # We always need it to be True
        if not flag:
            statement(i)
            flag = True
        else:
            statement2(i)

到目前为止,这是可行的,但是由于您说过至少有一个满足条件的

foo = range(n) # any iterable
iterfoo = iter(foo)
initial_value = next(i for i in iterfoo if condition(i))
statement(initial_value)
for i in iterfoo:
    if condition(i):
        statement2(i)

现在,这两种方法(如果我不缺少任何东西)都应该以不同的方式做同一件事,所以这是您的选择,尽管它也节省了两行代码,因为您不会做第一行在您的实际代码中,所以我投票给第二个片段:D

相关问题