2013-08-20 104 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