【发布时间】:2018-09-14 04:44:01
【问题描述】:
我的代码 sn-p 行为怪异;我做了另一个来说明这个问题。我认为这两个 sn-ps 应该会产生相同的结果,但不会:
alphas = np.arange(5)
args = zip(np.arange(5), np.arange(5))
output = [np.mean([ a+b for a, b in args]) for _ in alphas]
屈服
[4.0, nan, nan, nan, nan]
和
alphas = np.arange(5)
args = zip(np.arange(5), np.arange(5))
args = list(args) # <- this is the only difference
output = [np.mean([ a+b for a, b in args]) for _ in alphas]
屈服
[4.0, 4.0, 4.0, 4.0, 4.0]
唯一的区别是生成器被转换为列表推导内的列表。 有谁了解导致结果不同的潜在机制?
【问题讨论】:
-
为您修复了输出。
-
zip返回一个迭代器,并且您尝试对其进行多次迭代(每个_ in alphas一次)。 -
感谢您的回答和编辑。抱歉交换输出。
标签: python numpy generator list-comprehension