我正在研究生成器以使我的一些代码更有效率。目前想知道我可以/应该如何处理每个创建列表的嵌套 for 循环。嵌套循环为 for 循环的每一步重新生成一个值列表。这些值是 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
我认为这可以变成这样,使用 1 个生成器
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 。
max
不需要序列,它也可以与生成器一起使用,例如:
def define_max_values(data, indexes):
for iter in range(len(indexes)):
data_index_window = data[index[iter] - 5:index[iter] + 50]
yield max(np.linalg.norm(
data_index_window.iloc[i, 0:3].values) \
for i in range(len(data_index_window)))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句