如何巢发电机
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何巢发电机相关的知识,希望对你有一定的参考价值。
我期待到发电机,以使我的一些代码效率更高。目前不知道我怎么能/应该处理嵌套的,每创建一个列表循环。嵌套循环再生成用于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
我想这也可以变成这样,使用一台发电机
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)))
以上是关于如何巢发电机的主要内容,如果未能解决你的问题,请参考以下文章
poj2356Find a multiple——鸽巢定理运用