【发布时间】:2018-02-21 17:30:54
【问题描述】:
这是一个稍微笼统的问题 - 我正在寻找最pythonic和/或最有效的方法:
我有一个大型数据集和许多任务,有时需要通过遍历行来执行,有时不需要,具体取决于某些条件。
for step in np.arange (0, number_of_steps):
if condition1:
do_calculation1(step)
if condition2:
do_calculation2(step)
所以if 语句在每次迭代中都会重复。整个数据集的条件为真或假,所以为了节省时间,如果不需要,我不会进行迭代:
if condition1 or condition2:
for step in np.arange (0, number_of_steps):
if condition1:
do_calculation1(step)
if condition2:
do_calculation2(step)
但我有时仍会不必要地重复if 语句。
另一种方法是分离条件语句并通过数据集进行两次迭代:
if condition1 :
for step in np.arange (0, number_of_steps):
do_calculation1(step)
if condition2:
for step in np.arange (0, number_of_steps):
do_calculation2(step)
这样做的缺点是,如果两个条件都为真,我会迭代两次,这很慢(而且很笨拙)。两种方法的相对速度将取决于每个条件成立的频率,但我将使用各种各样的数据,所以我不知道哪个会更快。
所以我的问题是哪一种是最 Pythonic 和最有效的方法?
【问题讨论】:
标签: python iteration conditional