首页 > 解决方案 > 如何使用 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.

标签: pythondictionarylambdaindices

解决方案


Enumerate 生成一系列值对,因此您的 lambda 函数需要解包这些值对:

尝试:

result = list(map(lambda x: myFunction(list(map(lambda y: y[0], y[1][0:], y[1]))), enumerate(my_list)))

在哪里:

  1. y 是来自 enumerate 的 map 的每次迭代中的对 (i, x)
  2. 我是索引
  3. x 是 my_list 的第 i 个子列表。

lambda 函数需要解包 y 以获取 i 和 x

与:i = y[0] 和 x = y[1])

由于现在这会将三元组发送到 myFunction,因此您还应该更新它以接受三元组。


推荐阅读