有没有一种更简洁的方法来处理 for 循环中的(连续的)独占 if 语句?
Is there a cleaner way to handle (consecutive) exclusive if-statement in for-loop?
我是 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.
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)
现在这两者(如果我没有遗漏什么)应该做同样的事情,只是方式不同,所以这是你的选择,虽然它也为你节省了 2 行代码,因为你不会做你实际代码的第一行,所以我投票给第二个片段:D
我是 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.
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)
现在这两者(如果我没有遗漏什么)应该做同样的事情,只是方式不同,所以这是你的选择,虽然它也为你节省了 2 行代码,因为你不会做你实际代码的第一行,所以我投票给第二个片段:D