缺乏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]...]
答案 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))