如何在嵌套列表中将字符串转换为int?

时间:2012-10-02 02:47:28

标签: python string integer nested-lists

  

可能重复:
  How to convert strings into integers in python?

listy = [['1', '2', '3', '4', '5'], "abc"]

for item in listy[0]:
    int(item)

print listy

在嵌套列表中,如何将所有strings更改为ints?上面的内容给出了一个输出:

[['1', '2', '3', '4', '5'], 'abc']

为什么?

提前致谢!

1 个答案:

答案 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循环的简写),它遍历列表,将每个项目转换为整数并返回一个新列表。然后将新列表分配回(就地,可选)到外部列表。

这是针对您的具体问题的非常自定义的解决方案。更通用的解决方案包括递归以获取子列表,以及某种检测候选者进行数值转换的方法。