如何使用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

如果我使用带有enumerate的for循环,它可以正常工作,但我想知道是否有其他使用map的解决方案。

Enumerate生成一个值对序列,因此您的lambda函数需要解压缩值对:

尝试:

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

其中:

  1. y是枚举映射的每次迭代上的对(i,x(
  2. 我是索引
  3. x是my_list的第i个子列表

lambda函数需要对y进行解包才能将i和x返回

带有:i=y[0]和x=y[1](

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

最新更新