首页 > 解决方案 > 如何将函数应用于列表中的列表

问题描述

我有一个列表和一个函数:

t = [3, [1], [2, [1], [1]]]

f = lambda x: x**2

我想要这样的结果:

[9, [1], [4, [1], [1]]]

我尝试使用地图功能,但它似乎不起作用

执行此操作时出现类型错误:

list(map(f, t))

标签: pythonpython-3.x

解决方案


如果元素t是另一个列表,则需要映射函数,而不是调用函数。如果您希望它处理任意级别的嵌套,f则需要递归。

t = [3, [1], [2, [1], [1]]]

def f(x):
    if isinstance(x, list):
        return map(f, x)
    else:
        return x**2

print(map(f, t))

推荐阅读