enumerate(list)从列表中删除项目并将其转换为字符串/整数

时间:2018-09-19 12:44:48

标签: python python-2.7 for-loop enumerate

这个问题只是出于好奇。假设我有列表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)时没有发生这种情况?

1 个答案:

答案 0 :(得分:4)

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

直到您到达以下位置,代码才真正崩溃:

print i + " : " + x 

那么,到此为止,名称的重新绑定已经在上一行了:

for i, x in enumerate(x):

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