使用`enumerate(arr)`之类的函数返回数组数组

时间:2019-06-10 03:58:47

标签: python python-3.x enumerate

缺乏Python知识。我知道使用for循环是多么容易,但是我对python的功能很好奇。

我有两个具有相似字符串的并行数组。我想枚举第一个字符串,以便保存索引,然后可以使用它进行比较。但是,我还需要使用两个参数在结果数组上执行lambda函数。

filter(lambda x,y: y == arr2[x], list(enumerate(arr1))

lambda函数失败,因为枚举返回一个元组列表,并且lambda函数将它们解释为单个参数。

是否有enumerate的内联替代方法可以给我想要的结果? (数组数组)

当前输出: [(0,value),(1,value),(2,value)...]

所需的输出: [[0,value],[1,value],[2,value]...]

1 个答案:

答案 0 :(得分:3)

可以使用zip函数。 zip内置函数文档。

arr1 = [1, 2, 4]
arr2 = [1, 3, 4]
filter(lambda p: p[0] == p[1], [pair for pair in zip(arr1, arr2)])

zip返回包含具有相同索引的元素的值的对的可迭代。

更新:是的,可以简化解决方案

filter(lambda p: p[0] == p[1], zip(arr1, arr2))