2009-11-12 4 views
4

숫자가 포함 된 목록 (하위 목록)이 있으며 모든 하위 목록에만 해당 목록을 유지하고 싶습니다.파이썬에서 하위 목록 중복 찾기 (계속)

예 :

x = [ [1, 2, 3, 4], [3, 4, 6, 7], [2, 3, 4, 6, 7]] 

output => [3, 4] 

내가 어떻게 할 수 있습니까?

답변

8
common = set(x[0]) 
for l in x[1:]: 
    common &= set(l) 
print list(common) 

나 :

import operator 
print reduce(operator.iand, map(set, x)) 
+0

원래 set()으로 시작 했으므로 지금 수정되었습니다. –

+1

네, 네가 네 글자를 수정하고 일한 답을 올렸지 만, 그때에 너는 그걸 편집 했잖아. 슬프게도, stackoverflow 내가 +1 upvoted, 이후 내 upvote undid 당신을 +1 못하게됩니다. 좋은 대답! –

6

에서 하나 라이너 :

>>> reduce(set.intersection, x[1:], set(x[0])) 
set([3, 4]) 
+0

또는 list (reduce (set.intersection, x [1 :], set (x [0]))) – grokus

1
def f(a, b): 
    return list(set(a).intersection(set(b))) 

reduce(f, x) 
0

, 나디아 그러나 줄이고 사용하지 않고 거의 같은 해결 그냥 다른 방법으로, 나는지도를 사용합니다 :

>>> x = [ [1, 2, 3, 4], [3, 4, 6, 7], [2, 3, 4, 6, 7]] 
>>> set.intersection(*map(set,x)) 
set([3, 4]) 
>>>