2013-08-20 71 views
0

我,已經2所列出:子項目從列表的列表比較

l = [['red','a1',1],['red','a2',1],['blue','a3',1],['yellow','a4',1]] 

k = [['red','a2',1],['blue','a3',1],['yellow','a4',1]] 

,所以我想回到這樣的事情:

result = [0, 1, 1, 1] 

對不起我必須多練習一下列表理解!

我的功能:

def vectors(doc1,doc2,consulta): 
    res=[] 
    r = doc1 + doc2 + consulta 
    for e in r: 
     for i in doc1: 
      if i[0] == e[0]: 
       i[2] = i[2] + 1 
     else: 
      i[2] = 0 
    return res.append(i[2]) 

順序doesn't的事情,重要的是進行比較。

最好的問候!

+0

的代碼必須包括multiplicty,矢量必須是「l」出現在「k」中的次數。我應該使用櫃檯嗎? – JPP

回答

3

效率低,容易:

result = [x in k for x in l] 

效率(對於大k),但稍微複雜一些:

kset = set(tuple(x) for x in k) 
result = [tuple(x) in kset for x in l] 
+0

另外,我需要考慮l的元素出現在k中的時間,我該怎麼辦? – JPP

1

檢查:

>>> result = [1 if li in k else 0 for li in l] 
>>> result 
[0, 1, 1, 1] 
+0

另外,我需要考慮l的元素出現在k中的時間,我該怎麼辦? – JPP