【发布时间】:2020-12-27 04:46:47
【问题描述】:
我理解 python 中的 enumerate() 函数,但是我发现了一个奇怪的行为。对于像
这样的列表x = ["foo", "bar", "baz"]
enumerate(x) 创建一个枚举对象并检索元素,我们需要使用 list() 函数。 当我使用
list(enumerate(x))
我遇到了一个错误
TypeError: 'list' object is not callable.
奇怪的是(这让我更担心),在尝试了一段时间后,我放弃了它并转向了其他事情。 同样,当我开始运行相同的代码(完全没有变化)时,它运行得非常好,我得到了如下的输出(这也是我们所期望的)
[(0, 'foo'), (1, 'bar'), (2, 'baz')]
当我下次再次看到时(可能在我的下一个会话中),问题变得更加奇怪,代码产生了错误,现在你可能已经猜到我的痛苦了,它在下一个会话中再次起作用。
有没有人在函数有时工作而其他时候抛出错误时遇到过此类问题? 在这种情况下可以做什么?我错过了什么吗?
我用的是 Google Colab,相信没关系。
编辑:应@ZF007 在 cmets 中的要求,我在 Windows 机器上使用 Colab 的免费版本,Python 版本是 - 3.6.9
This 显示错误,而之前相同的代码正在运行。
正如@Grismar 和@Frank 所指出的那样,可能有其他东西在幕后干扰 list(enumerate(x))。
正如我之前提到的,代码现在可以工作了,所以我没有尝试其他任何事情,比如更改 IDE。
谢谢
【问题讨论】:
-
我希望它可能是缺少小语法或可能是 Colab 问题
-
沿着这条线的某个地方,您将“列表”从内置的
list类反弹到列表的实例。list = [1,2,3]或类似的东西。确保不要将内置对象的名称用作变量。 -
您确定错误出现在这一行?
list(enumerate(x))的结果是否可能会意外地被用作函数?您是否将此列表分配给意外覆盖内部函数的变量名称? -
@NanthakumarJJ 恐怕不是。因为我没有更改代码中的任何内容。
-
你的问题得到了反对票,因为一旦人们提出了可能的原因,你就没有提供关于你尝试了什么的反馈——就像 Python 不会神奇地决定第一次做一件事,下一次做另一件事,你不能指望这里的人会神奇地推断出你的情况。我仍然认为答案是给定的,因为您没有提供进一步的证据,而且这肯定是最有可能的。
标签: python python-3.x google-colaboratory enumerate