如何在嵌套列表上使用map函数并将字符串转换为整数?

时间:2010-12-01 19:33:39

标签: python

我需要在Python(2.4.4)中使用map函数为列表中的每个项添加1,所以我尝试将字符串转换为整数。

line=[['10', '13\n'], ['3', '4\n'], ['5', '3\n'], ['1', '13']]

map(lambda X:(X+1),int(line))

由于\n和巢穴,这不起作用吗?

4 个答案:

答案 0 :(得分:6)

我会使用列表理解但是如果你想要map

map(lambda line: map(lambda s: int(s) + 1, line), lines)

列表理解将是

[[int(x) + 1 for x in line] for line in lines]



>>> lines=[['10', '13\n'], ['3', '4\n'], ['5', '3\n'], ['1', '13']]

>>> map(lambda line: map(lambda s: int(s) + 1, line), lines)
[[11, 14], [4, 5], [6, 4], [2, 14]]

>>> [[int(x) + 1 for x in line] for  line in lines]
[[11, 14], [4, 5], [6, 4], [2, 14]]

答案 1 :(得分:5)

你的意图不明确,但不是由于\ n。

见:

>>> line=[['10', '13\n'], ['3', '4\n'], ['5', '3\n'], ['1', '13']]
>>> map(lambda X:([int(X[0])+1, int(X[1]) +1]),line)
[[11, 14], [4, 5], [6, 4], [2, 14]]

答案 2 :(得分:1)

将带有换行符的字符串转换为整数不是问题(例如,int("1a")会有歧义,因此Python不允许这样做。)

代码中的映射将一个子列表一个接一个地传递给lambda函数。因此,您需要再次遍历内部列表:

>>> line = [['10', '13\n'], ['3', '4\n'], ['5', '3\n'], ['1', '13']]
>>> print map(lambda sublist: map(int, sublist), line)
[[10, 13], [3, 4], [5, 3], [1, 13]]

如果增加1,就会像上面一样简单:

map(lambda sublist: map(lambda x: int(x)+1, sublist), line)

答案 3 :(得分:1)

使用参数解包。

pairs=[['10', '13\n'], ['3', '4\n'], ['5', '3\n'], ['1', '13']]
[[int(x) + 1, int(y) + 1] for x, y in pairs]

一个循环,没有lambda。