2010-11-05 23 views
12

में मैच के समतुल्य समतुल्य है क्या आर में मिलान कार्य करने के लिए पाइथन में कोई आसान तरीका है? आर में क्या मिलान है यह है कि यह अपने दूसरे तर्क में अपने पहले तर्क के पहले (पहले) मैचों की स्थिति का एक वेक्टर देता है।पायथन (या numpy) R

उदाहरण के लिए, निम्नलिखित आर स्निपेट।

> a <- c(5,4,3,2,1) 
> b <- c(2,3) 
> match(a,b) 
[1] NA NA 2 1 NA 

अनुवाद कि अजगर में, क्या मैं देख रहा हूँ एक समारोह है कि करता है निम्नलिखित

>>> a = [5,4,3,2,1] 
>>> b = [2,3] 
>>> match(a,b) 
[None, None, 2, 1, None] 

धन्यवाद है!

उत्तर

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] 

Sum 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] 
+0

वाह! धन्यवाद! – djiao

+0

अच्छा। यह सूची के आसपास पाने के लिए एक शानदार तरीका है। इंडेक्स() त्रुटि जब तत्व मौजूद नहीं है। – hatmatrix

संबंधित मुद्दे