我正在学习关于神经网络的教程 1
它在 Python 2.7 中。我正在使用 3.4。这是困扰我的路线:
if test_data: n_test = len(test_data)
我得到: TypeError: object of type 'zip' has no len()
。
有没有办法重写它以便它在 3.4 中工作?
原文由 Ada Stra 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在学习关于神经网络的教程 1
它在 Python 2.7 中。我正在使用 3.4。这是困扰我的路线:
if test_data: n_test = len(test_data)
我得到: TypeError: object of type 'zip' has no len()
。
有没有办法重写它以便它在 3.4 中工作?
原文由 Ada Stra 发布,翻译遵循 CC BY-SA 4.0 许可协议
现在回答有点晚了,但以防万一其他人偶然发现它:对于同一个神经网络示例教程,结果我不得不用 list(zip(…)) 构造将 mnist_loader 中的 3 个 zip 调用包装起来:
training_data = list(zip(training_inputs, training_results))
(...)
validation_data = list(zip(validation_inputs, va_d[1]))
(...)
test_data = list(zip(test_inputs, te_d[1]))
然后它起作用了。
原文由 Nicolas Turgeon 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答3.9k 阅读✓ 已解决
2 回答744 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
2 回答2.1k 阅读✓ 已解决
3 回答1.7k 阅读✓ 已解决
4 回答2.5k 阅读
如果您知道迭代器是有限的:
或者,如果您知道
test_data
总是很小 ,并且 分析器说代码是您应用程序中的瓶颈,那么这里的代码可能对小n_test
更有效:不幸的是,
operator.length_hint()
(Python 3.4+)为zip()
对象返回零。请参阅 PEP 0424 - 一种公开长度提示的方法。