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
指向不同的对象 - 列表中的第一项,无论它是字符串还是整数。重命名您的列表或循环变量。
这个问题只是出于好奇。假设我有列表 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
指向不同的对象 - 列表中的第一项,无论它是字符串还是整数。重命名您的列表或循环变量。