我正在研究生成器,以使我的一些代码更高效。目前正在考虑如何处理嵌套for循环,每个循环创建一个列表。嵌套循环为for循环的每个步骤重新生成一个值列表。这些值是fed数据3列的向量标准化。从该列表中获取最大值并将其添加到函数返回的列表中。
似乎使用发电机可以提高效率。但是,我不确定如何处理嵌套for循环,因为函数将在第一次生成时停止。
当前的代码;
def define_max_values(data, indexes):
max_values = []
for iter in range(len(indexes)):
data_index_window = data[index[iter] - 5:index[iter] + 50]
for i in range(len(data_index_window)):
sub_list = []
sub_list.append(np.linalg.norm(data_index_window.iloc[i, 0:3].values))
max_values.append(max(sub_list))
return max_values
def define_max_values(data, indexes):
for iter in range(len(indexes)):
data_index_window = data[index[iter] - 5:index[iter] + 50]
for i in range(len(data_index_window)):
sub_list = []
sub_list.append(np.linalg.norm(data_index_window.iloc[i, 0:3].values))
yield(max(sub_list)
这似乎已经是更可读/更高效的代码了,但我想知道是否/如何用另一个结果替换内部list.append。