Python:为什么使用if…elif语句,多个列表解析似乎比单个for循环快?

我有一些代码正在尝试确定是否有运行它的更快方法。本质上,我要遍历一个定界文件,以找到一组标志来解析数据。这些文件可能很长,因此我正在尝试为此找到一种快速方法。

我尝试过的两种方法是列表理解和for循环:

方法1:

flag_set_1 = [i for i,row in enumerate(data_file) if row[0] == flag_1]
flag_set_2 = [i for i,row in enumerate(data_file) if row[0] == flag_2]
flag_set_3 = [i for i,row in enumerate(data_file) if row[0] == flag_3]
flag_set_4 = [i for i,row in enumerate(data_file) if row[0] == flag_4]

方法2:

for i,row  in enumerate(data_file):
    if row[0] == flag_1:
        flag_set_1.append(i)
    elif row[0] == flag_2:
        flag_set_2.append(i)
    elif row[0] == flag_3:
        flag_set_3.append(i)
    elif row[0] == flag_4:
        flag_set_4.append(i)

我实际上期望在这种情况下,列表理解速度会变慢。认为方法1将必须遍历data_file 4次,而方法2将仅需迭代1次。我怀疑方法2中使用append()会使速度变慢。

所以我问,有没有更快的方法来实现呢?

评论