python - 如何使用 map 和 lambda 表达式跟踪索引?
问题描述
在执行下面的代码时,我想跟踪索引,因为之后我需要对结果列表进行排序:
my_list = np.array([[[5,8], [2,2], [9,5]], [[5,8], [9,5], [2,2]], [[9,5], [5,8], [2,2]]])
result = list(map(lambda x: myFunction(list(map(lambda x: x[0:], x))), my_list))
我尝试使用enumerate(my_list)
,但出现错误:
result = list(map(lambda x: myFunction(list(map(lambda x: x[0:], x))), enumerate(my_list)))
TypeError: 'int' object is not subscriptable
如果我将 for 循环与 enumerate 一起使用,它可以正常工作,但我想知道是否有其他解决方案使用map
.
解决方案
Enumerate 生成一系列值对,因此您的 lambda 函数需要解包这些值对:
尝试:
result = list(map(lambda x: myFunction(list(map(lambda y: y[0], y[1][0:], y[1]))), enumerate(my_list)))
在哪里:
- y 是来自 enumerate 的 map 的每次迭代中的对 (i, x)
- 我是索引
- x 是 my_list 的第 i 个子列表。
lambda 函数需要解包 y 以获取 i 和 x
与:i = y[0] 和 x = y[1])
由于现在这会将三元组发送到 myFunction,因此您还应该更新它以接受三元组。
推荐阅读
- kotlin - Kotlin 将字符串映射到另一种类型?
- tcl - 在 tcl 中将大数转换为十六进制
- typescript - 将字符串转换为打字稿枚举的通用函数
- ruby-on-rails - 在 Postgres 中使用子查询正确格式化 ActiveRecord 查询
- amazon-web-services - 指向同一网站的两个不同 AWS Lightsail 实例
- python - 非本地模式而不是 C 的本地静态与块范围
- ios - 如何将`Observable`转换为`ControlEvent`
- python - Pandas 数据框每组 5 秒间隔的滚动值差异
- notepad++ - Notepad++,比较插件安装问题
- mysql - MYSQL中的存储函数