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]

効率的 (大きな の場合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 に答える