python - 如何将函数应用于列表中的列表
问题描述
我有一个列表和一个函数:
t = [3, [1], [2, [1], [1]]]
f = lambda x: x**2
我想要这样的结果:
[9, [1], [4, [1], [1]]]
我尝试使用地图功能,但它似乎不起作用
执行此操作时出现类型错误:
list(map(f, t))
解决方案
如果元素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))
推荐阅读
- c# - 隐藏和取消隐藏一个表单
- google-apps-script - GOOGLE 幻灯片:防止用户使用键盘移动到下一张幻灯片
- reactjs - 在样式化组件的函数中禁用 emmett
- css - Bootstrap 5 根据分辨率在特定位置中断按钮组
- angular - 遍历顺序 API 调用 Rxjs(链表)
- angular - 如何在 Angular 9 中处理 ul li 的 mouseover 和 mouseout 事件
- python - Iron Python 设置
- adfs - 如何在 ADFS 服务器中为联合身份验证服务设置附加绑定以进行身份验证
- python - 检查矩阵/数组元素方式模整数的条件
- javascript - AWS - 在现有 React Web 应用程序上使用用户名和密码从现有 Cognito 用户池获取用户令牌