0

j私の目標は、以下のリスト (および)の項目の共通部分kを 3 つの個別のリストにキャプチャすることです。

j=[[1,2,3],[2,3,4,],[2,1,3]]
k=[[2,4,5],[3,2,1,][4,5,6]]

私の試み:

>>> b=[]
>>> for x in j:
    for y in k:
        c=[h for h in x if h in y]
            b.append(c)

出力:

>>> b
[[2], [1, 2, 3], [], [2, 4], [2, 3], [4], [2], [2, 1, 3], []]

望ましい出力:

[[[2], [1, 2, 3], []], [[2, 4], [2, 3], [4]], [[2], [2, 1, 3], []]]
4

2 に答える 2

0

セットと itertools を忘れないでください。アイデアをよりよく示すために、型変換をインラインのままにしました。理想的には、 itertools.product() によって生成されたすべての組み合わせに対して set() を呼び出すのではなく、アイデアとして:

import itertools
from collections import defaultdict

j=[[1,2,3],[2,3,4],[2,1,3]]
k=[[2,4,5],[3,2,1],[4,5,6]]

d = defaultdict(list)
for x,y in itertools.product(j,k):
    d[tuple(x)].append( list( set(x) & set(y) ) )
print d.values()
于 2013-09-29T21:02:42.350 に答える