2016-12-09 9 views
-2

Ich habe eine Liste von Listen, wie folgt:Überschneidung der Listen in einer Liste (Liste der Listen) in Python

list = [[1,2,3],[2,3,4],[3,4,5],[3,5,6]] 

ich die Kreuzung von ihnen in Python 2.7 finden will, ich meinen

intersect_list = [3] 

Danke.

+0

einen Code haben, noch? –

+0

@ cricket_007 Ich versuchte paarweise Schnittpunkt zwischen einem Ergebnis und jedem Element der Liste, aber ich denke, es ist kein optimaler Weg, sollte ich es hier schreiben? – user137927

Antwort

3

Erstens, verwenden Sie nicht list als Variablenname - es verbirgt die eingebaute Klasse.

Als nächstes dies wird es auf eine Liste von Sätzen tun

>>> a = [[1,2,3],[2,3,4],[3,4,5],[3,5,6]] 
>>> set.intersection(*map(set,a)) 
{3} 

Die map(set,a) einfach umwandelt. Dann entpacke einfach die Liste und finde die Kreuzung.

Wenn Sie wirklich das Ergebnis als Liste müssen, wickeln nur das Gespräch mit list(...)

+0

https://docs.python.org/2/library/stdtypes.html#set.intersection – Stats4224

+0

Sie könnten 'set (a [0]). Intersection (* a [1:])' verwenden, was zu vermeiden wäre Die meisten Listen in Sätze konvertieren. –

+0

Sie können 'set (m [0]). Intersection (* m [1:])' für die Verweigerung der Umwandlung aller Unterlisten in 'set'. – Kasramvd