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])

顺序不重要,重要的是比较。

此致!

4

2 回答 2

3

低效但简单:

result = [x in k for x in l]

高效(对于 large k)但稍微复杂一些:

kset = set(tuple(x) for x in k)
result = [tuple(x) in kset for x in l]
于 2013-08-20T01:49:48.000 回答
1

检查这个:

>>> result = [1 if li in k else 0 for li in l]
>>> result
[0, 1, 1, 1]
于 2013-08-20T01:51:12.183 回答