3

我有一个字符串列表,名为以下列表l

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

我想从第 2 项开始将列表视为 int。以下代码可以达到目的,但没有将列表项转换为 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>]

如何将我的列表项从字符串转换为 int?

4

2 回答 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]]

调用list()强制 Python 3 完全评估地图 - 在 Python 2 中没有必要。

于 2013-07-13T22:21:14.037 回答
2

您似乎正在使用Python 3.x. 所以map产生map object(这是一个迭代器)。您可以将其包装起来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]]

其次,您迭代索引irange然后对初始列表使用随机访问。在 Python 中,您可以只遍历没有索引的列表:[list(map(int,sub_list[2:])) for sub_list in l]

但我认为使用列表推导更像 Pythonic:

>>> [[int(i) for i in sub_list[2:]] for sub_list in l]
[[3, 4, 5, 6], [2, 3, 4]]
于 2013-07-13T22:23:49.877 回答