我正在学习神经网络1的教程

它在Python 2.7中.我用的是3.4.这是困扰我的一句话:

if test_data: n_test = len(test_data)

我得到TypeError: object of type 'zip' has no len()分.

有没有办法重写它,让它在3.4中运行?

推荐答案

如果您知道迭代器是有限的:

#NOTE: `sum()` consumes the iterator
n_test = sum(1 for _ in test_data) # find len(iterator)

或者,如果您知道test_data总是小and,那么探查器会说代码是应用程序中的瓶颈,那么下面的代码可能对小n_test更有效:

test_data = list(test_data)
n_test = len(test_data)

不幸的是,对于zip()对象,operator.length_hint()(Python 3.4+)返回零.见PEP 0424 -- A method for exposing a length hint.

Python-3.x相关问答推荐

Pandas—在特定列上比较两行双框,并根据特定条件保留其中一行?

math. gcd背后的算法是什么,为什么它是更快的欧几里得算法?

是什么原因导致Pandas=2.1.4和Pandas=1.4.2之间Pandas DataFrame中从Float64到int32的连续列转换方式不同

Numba编译时间呈指数级增长--可以像C编译器一样配置优化级别吗?

如何从选定的html内容中获取所需的文本

在Python代码中包含NAN值时,以两个矩阵计算RMSE

如何沿单列获取嵌套列表中的唯一值?

Pandas:从 Pandas 数据框中的 1 和 0 模式中获取值和 ID 的计数

numpy是如何添加@运算符的?

具有 2 个输入的 python 3 map/lambda 方法

如何禁用 pylint 禁止自用警告?

如何确定一个类的元类?

具有两个或多个返回参数的函数注释

为什么 virtualenv 会有效地禁用 Python 3 制表符补全?

为什么中断比引发异常更快?

从 IPython 重新加载 Python 扩展模块

Pyodbc:登录超时错误

SQLAlchemy:如果不存在则创建模式

TypeError:只有整数标量数组可以转换为标量索引

将 Python 字节转换为无符号 8 位整数