enumerate(list) 从列表中删除项目并将其转换为 string/int

enumerate(list) removes items from a list and convert it to string/int

这个问题只是出于好奇。假设我有列表 x

   x = ['a', 'b', 'c', 'd', 'e']

当我枚举此列表并犯下以下故意错误时:

  for i, x in enumerate(x):
      print i + " : " + x 
      #Should use str(i) and str(x)

可以预见会产生这个错误:

    Traceback (most recent call last):
      File "<pyshell#26>", line 2, in <module>
        print i + " : " + x
    TypeError: unsupported operand type(s) for +: 'int' and 'str'

然而x列表被转换为一个字母字符串'a'

  print x
  'a'

我对数字列表 x = [1, 2, 3, 4] 进行了同样的尝试,x 被转换为 1 的整数。

为什么会这样?为什么当我使用 str(i) 和 str(x) 时它没有发生?

这里 enumerate 的问题让人分心。真正的问题是您有一个名为 x 的列表,然后您将 内的值 分配给 for 循环中的名称 x .

在您到达以下位置之前,代码实际上不会崩溃:

print i + " : " + x 

嗯,到时候,名称的重新绑定已经发生在上一行:

for i, x in enumerate(x):

现在 x 指向不同的对象 - 列表中的第一项,无论它是字符串还是整数。重命名您的列表或循环变量。