Python:对列表中的所有元素和子元素执行操作

时间:2018-06-14 00:39:05

标签: python numpy

我想在一个包含多个列表的巨大列表中执行一些操作,在这些多个列表中,它们也有一些列表,例如:

arr = [[[1, 2], 3], [2, 3, 4]]

如何对这些列表中的所有元素执行某些操作,例如+1?结果将是:

[[[2, 3], 4], [3, 4, 5]]

我知道我可以使用for遍历每个列表,但有时这些元素可能是string或其他类型?

我知道我可以检查type()列表中的每个元素是否递归并执行某些操作,但有没有简单方法来解决此问题?


我的屁股太宽了

1 个答案:

答案 0 :(得分:2)

一个简单的递归例程可以这样做:

代码:

def operate_on(data, operation):
    if isinstance(data, list):
        return [operate_on(x, operation) for x in data]
    else:
        return operation(data)

测试代码:

arr = [[[1, 2], 3], [2, 3, 4]]
print(operate_on(arr, lambda x: x + 1))

结果:

[[[2, 3], 4], [3, 4, 5]]