函数 f 将进行不必要的迭代。
def f(array):
for (i, row) in enumerate(array):
for (j, value) in enumerate(row):
if i < some_number and j > some_other_number:
do_something
是否有一种惯用的方法来在 for 循环中强制执行条件?
def f(array):
for (i < some_number, row) in enumerate(array):
for (j > some_other_number, value) in enumerate(row):
do_something
请您参考如下方法:
您可以使用 itertools.islice(iterable,start,stop[,step])为此:
<b>from itertools import islice</b>
def f(array):
for (i, row) in <b>islice(</b>enumerate(array)<b>,some_number)</b>:
for (j, value) in <b>islice(</b>enumerate(row)<b>,some_other_number+1,None)</b>:
# do_something
pass
鉴于您在计算中不需要 i 和 j(您只需要它们进行边界检查,您甚至可以省略它们)。
from itertools import islice
def f(array):
for row in islice(array,some_number):
for value in islice(row,some_other_number+1,None):
# do_something
pass
