listy = [['1', '2', '3', '4', '5'], "abc"]
for item in listy[0]:
int(item)
print listy
在嵌套列表中,如何将所有strings
更改为ints
?上面的内容给出了一个输出:
[['1', '2', '3', '4', '5'], 'abc']
为什么?
提前致谢!
答案 0 :(得分:0)
您需要将转换后的项目分配回子列表(listy[0]
):
listy[0][:] = [int(x) for x in listy[0]]
说明:
for item in listy[0]:
int(item)
上面迭代子列表中的项并将它们转换为整数,但它不会将表达式int(item)
的结果赋给任何东西。因此结果就丢失了。
[int(x) for x in listy[0]]
是一个列表推导(你的for
循环的简写),它遍历列表,将每个项目转换为整数并返回一个新列表。然后将新列表分配回(就地,可选)到外部列表。
这是针对您的具体问题的非常自定义的解决方案。更通用的解决方案包括递归以获取子列表,以及某种检测候选者进行数值转换的方法。