python - 从列表中调用 lambda 函数
问题描述
如果我有一个包含 lambda 函数的列表,例如:
a = [lambda x: x * 2]
我怎么能把这个 lambda 函数调用到一个列表中:
b = [1,2,3,4]
这样它的结果可能是:
result = list(map(lambda x: x * 2, b))
并得到:
[2,4,6,8]
此外,如果 a 包含两个 lambda 函数,例如:
a = [lambda x:x * 2, lambda x: x-1]
我如何在不使用 for 循环或列表理解但使用 map() 的情况下调用这些函数来列出 b?
我希望有人可以帮助我!
解决方案
在包含在列表中的单个 lambda 的特殊情况下,执行
result = list(map(a[0], b))
但是python中没有特殊情况。因此,对于一般情况,您可以有一个平面列表:
result = [f(x) for f in a for x in b]
或嵌套的:
result = [[f(x) for f in a] for x in b]
a
您可以通过在和上交换循环来反转列表的排序顺序b
。
您甚至可以使用itertools.product
来获得扁平外壳(再次使用a
并且b
可以互换以更改结果的顺序):
result = [f(x) for f, x in itertools.product(a, b)]
推荐阅读
- android - “重新运行失败的测试”时Android Studio“在包中找到0个测试类”
- python - 运行从 Microsoft Flow 触发的 Python
- typescript - 类型脚本装饰器错误 TS1241:作为表达式调用时无法解析方法装饰器的签名
- java - 文本对齐算法
- django - 如何在谷歌应用引擎 python send_mail 函数中附加 pdf?
- docker - 如何使用 docker-compose 运行 SolrCloud
- sql-server - 在 SQL Server 中转置行
- sql - 我希望 2 个表在 SQL Server 中合并并转换为 1 个表
- elasticsearch - 在 Grafana 中使用模板和 Elasticsearch 作为数据源的术语聚合
- javascript - Chrome 扩展程序中的功能被跳过