Python:在二维数组(列表的列表)元素上执行操作的单行代码?

15 投票
6 回答
28042 浏览
提问于 2025-04-16 19:45

我有一个包含多个列表的列表,每个子列表里有不同数量的字符串。我想把这些字符串高效地转换成整数,但我感觉有点糊涂,因为我一直搞不定。我尝试了这个方法:

newVals = [int(x) for x in [row for rows in values]]

这里的'values'就是那个包含多个列表的列表。结果总是提示说x是一个列表,所以不能直接用在int()里。显然我在这里做了什么傻事,那到底是怎么回事呢?有没有什么常用的方法可以处理这种情况?

6 个回答

3

另一种解决方法

a = [[1, 2, 3], [7, 8, 6]]
list(map(lambda i: list(map(lambda j: j - 1, i)), a))
[[0, 1, 2], [6, 7, 5]] #output
11

这样怎么样:

>>> a = [['1','2','3'],['4','5','6'],['7','8','9']]
>>> [[int(j) for j in i] for i in a]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
23

这样会让整数变成嵌套的结构

[map(int, x) for x in values]

如果你想把它们变成平坦的结构,其实也不难

在Python3中,map()会返回一个迭代器。你可以使用

[list(map(int, x)) for x in values]

不过在这种情况下,你可能会更喜欢使用嵌套的列表推导式

[[int(y) for y in x] for x in values]

撰写回答