【问题标题】:How to keep track of indices using map and lambda expression?如何使用 map 和 lambda 表达式跟踪索引?
【发布时间】:2020-07-16 22:07:01
【问题描述】:

在执行下面的代码时,我想跟踪索引,因为之后我需要对结果列表进行排序:

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 的解决方案。

【问题讨论】:

    标签: python dictionary lambda indices


    【解决方案1】:

    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. i 是索引
    3. x 是 my_list 的第 i 个子列表。

    lambda 函数需要解包 y 才能得到 i 和 x

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

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

    【讨论】:

      猜你喜欢
      • 2013-01-31
      • 1970-01-01
      • 1970-01-01
      • 2014-08-23
      • 1970-01-01
      • 2015-06-24
      • 2017-06-13
      • 1970-01-01
      相关资源
      最近更新 更多