有没有简单的方法在python中完成匹配函数在R中的作用? R中的匹配是它返回第二个参数中第一个参数(第一个)匹配位置的向量。
例如,以下R片段。
> a <- c(5,4,3,2,1)
> b <- c(2,3)
> match(a,b)
[1] NA NA 2 1 NA
翻译在python中,我正在寻找的是一个执行以下操作的函数
>>> a = [5,4,3,2,1]
>>> b = [2,3]
>>> match(a,b)
[None, None, 2, 1, None]
谢谢!
答案 0 :(得分:22)
>>> a = [5,4,3,2,1]
>>> b = [2,3]
>>> [ b.index(x) if x in b else None for x in a ]
[None, None, 1, 0, None]
如果你真的需要“基于一个”的位置而不是“零基础”,则总和1.
>>> [ b.index(x)+1 if x in b else None for x in a ]
[None, None, 2, 1, None]
如果你要重复一遍,你可以使这个单行重复使用:
>>> match = lambda a, b: [ b.index(x)+1 if x in b else None for x in a ]
>>> match
<function <lambda> at 0x04E77B70>
>>> match(a, b)
[None, None, 2, 1, None]