Python list(enumerate(x))有时有效,有时抛出错误

Python list(enumerate(x))有时有效,有时抛出错误,python,python-3.x,google-colaboratory,enumerate,Python,Python 3.x,Google Colaboratory,Enumerate,我理解python中的enumerate()函数,但是我发现了同样的奇怪行为。对于这样的列表 x = ["foo", "bar", "baz"] enumerate(x)创建一个enumerate对象,要检索元素,需要使用list()函数。 当我使用 list(enumerate(x)) 我犯了个错误 TypeError: 'list' object is not callable. 奇怪的是(这让我更担心),在尝试了一段时间后,

我理解python中的enumerate()函数,但是我发现了同样的奇怪行为。对于这样的列表

x = ["foo", "bar", "baz"]
enumerate(x)创建一个enumerate对象,要检索元素,需要使用list()函数。 当我使用

list(enumerate(x))
我犯了个错误

TypeError: 'list' object is not callable.
奇怪的是(这让我更担心),在尝试了一段时间后,我离开了它,转而做了其他事情。 同样,当我开始运行相同的代码(完全没有更改)时,它工作得非常好,我得到的输出如下(这也是我们所期望的)

当我下次(可能在我的下一个会话中)再次看到代码产生错误时,问题变得更加奇怪,现在你可能已经猜到了我的痛苦,它在下一个会话中再次工作

当函数有时工作而另一次抛出错误时,是否有人遇到过此类问题? 在这种情况下可以做什么?我错过了什么吗?

我正在使用谷歌Colab,我相信这并不重要

编辑:根据@ZF007在评论中的要求,我正在Windows机器上使用免费版本的Colab&Python版本为-3.6.9

显示同一代码先前运行时出现的错误

正如@Grismar和@Frank所指出的,可能还有其他东西在幕后干扰list(枚举(x))

正如我前面提到的,代码现在正在运行,所以我不会尝试其他任何事情,比如更改IDE


谢谢

评论中的一些人已经指出,这一错误可能是由于重新定义了
列表
,从而“掩盖”了原始定义

例如:

x = ["foo", "bar", "baz"]

# this works, but redefines list
list = list(enumerate(x))

# this no longer works, since `list` is now the list created in the previous line
list = list(enumerate(x))
当执行最后一行时,您将看到此错误:

Traceback (most recent call last):
  File "<script filename>", line 7, in <module>
    list = list(enumerate(x))
TypeError: 'list' object is not callable

我希望它可能缺少小语法,或者可能是Colab问题,在这个问题上,您可以将“list”从内置的
list
类反弹到一个list实例<代码>列表=[1,2,3]或类似的东西。确保不使用内置对象的名称作为变量。确定错误在这一行吗?
list(enumerate(x))
的结果是否可能被意外用作函数?您是否将此列表分配给一个意外重写内部函数的变量名?@NanthakumarJJ恐怕不是。因为我没有改变代码中的任何内容。你的问题得到了反对票,因为一旦有人提出了可能的原因,你没有就你的尝试提供反馈——就像Python不会神奇地决定第一次做一件事,第二次做另一件事一样,你不能指望这里的人神奇地推断你的情况是什么。我仍然认为答案是给定的,因为你没有提供进一步的证据,这肯定是最有可能的。谢谢,但正如我提到的,我没有使用任何内置名称。我只是在打印列表(enumerate(x)),因为您报告的行为是间歇性的,可能是其他东西在您不知情的情况下重新定义了它。当你下次遇到这个问题时,最好是
print(list)
print(type(list))
,这样你就可以知道当时
list
实际上是什么了。观看视频。很明显,有些东西正在重新定义“列表”。没有其他解释。正如@Grismar所指出的,下次你看到这个,试着打印出
list
的值,看看你得到了什么。谢谢,我会检查的。
Traceback (most recent call last):
  File "<script filename>", line 7, in <module>
    list = list(enumerate(x))
TypeError: 'list' object is not callable
for i, obj in enumerate(x):
    print(f'{ob} is number {i}')