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

2 投票
4 回答
6967 浏览
提问于 2025-04-16 07:54

我想在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 个回答

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。

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]]
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]]

撰写回答