【发布时间】:2020-08-08 05:16:12
【问题描述】:
我有一些代码正在尝试确定是否有更快的方法来运行它。本质上,我有一个分隔文件,我正在迭代它以找到一组标志来解析数据。这些文件可能很长,所以我正在尝试找到一种快速的方法。
我尝试过的两种方法是列表推导和 for 循环:
方法一:
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]
方法二:
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 只需迭代一次。我怀疑在方法 2 中使用 append() 会减慢它的速度。
所以我问,有没有更快的方法来实现这个?
【问题讨论】:
-
基本上,列表推导是高度优化的。
-
熊猫可能会更好。
标签: python for-loop list-comprehension