如何将列表中的字符串项转换为整数?

3

我是一个有用的助手,可以为您进行文本翻译。

我有一个名为l的列表,其中包含字符串列表,请看下面的示例:

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

我希望以int类型查看从第2项开始的列表。以下代码可以实现此目的,但是没有将列表项转换为int类型:
>>> [l[i][2:] for i in range(len(l))]
[['3', '4', '5', '6'], ['2', '3', '4']]

我尝试使用map(),但结果并不像这样成功:

>>> [map(int,l[i][2:]) for i in range(len(l))]
[<map object at 0x00000000029CAE10>, <map object at 0x00000000029CAF98>]

我该如何将列表中的字符串转换为整数?

2个回答

2

尝试迭代您的主列表元素。

>>> A = [['1', '2', '3', '4', '5', '6'], ['2', '3', '2', '3', '4']]
>>> [list(map(int, x[2:])) for x in A]
[[3, 4, 5, 6], [2, 3, 4]]

在 Python 3 中,调用list()会强制执行 map 函数的完整计算 - 在 Python 2 中则不需要。


但是我希望结果从第2个位置开始,因此我必须使用[i][2:]。您能根据我上面解释的示例进行更多澄清吗?我无法理解您想要表达什么。 - user2192774
@user2192774 是的,抱歉我一开始没注意到。我后来添加了那个。 - Sajjan Singh

2

你似乎正在使用 Python 3.x。所以map会生成一个map对象(它是一个迭代器)。您可以将其包装在list中以查看结果:

>>> l = [['1', '2', '3', '4', '5', '6'], ['2', '3', '2', '3', '4']]
>>> [list(map(int,l[i][2:])) for i in range(len(l))]
[[3, 4, 5, 6], [2, 3, 4]]

其次,您需要在range上迭代索引i,然后使用初始列表的随机访问。在Python中,您可以直接遍历列表而无需使用索引:[list(map(int,sub_list[2:])) for sub_list in l]

但我认为更符合Python风格的是使用列表推导式:

>>> [[int(i) for i in sub_list[2:]] for sub_list in l]
[[3, 4, 5, 6], [2, 3, 4]]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接