2017-02-07 14 views
0

Ich habe eine Liste von Zip-Paaren (zB A)entfernen Reißverschluss Paare mit gleichen Einträgen in Python Liste

A = [(0, 0), (0, 1), (0, 6), (0, 7), (1, 3), (1, 1), (2, 2)] 

Was ist die beste Art und Weise ist, in der ich alle Paare entfernen, wo die ersten und die zweiten Einträge gleich einander (und eine neue Liste erstellen)?

In dem obigen Beispiel ( A), die Paare, die ich wünsche zu entfernen sind (0, 0), (1, 1) und(2, 2). In diesem Beispiel möchte ich, dass die neue Liste so aussieht.

A_new = [(0, 1), (0, 6), (0, 7), (1, 3)] 
+1

** (2,1) ** sollte ein Tippfehler sein? – armnotstrong

Antwort

4

können Sie einfache Liste verwenden Verständnis mit, wenn Klausel, die True für alle ungleichen Paare gibt, die Sie behalten möchten:

>>> A = [(0, 0), (0, 1), (0, 6), (0, 7), (1, 3), (1, 1), (2, 2)] 
>>> [(x, y) for x, y in A if x != y] 
[(0, 1), (0, 6), (0, 7), (1, 3)] 
1

filter verwenden, ist es ein Richter Funktion als erster Parameter nimmt, was zu sagen Element zu behalten und die iterable Liste als zweiter Parameter, lambda definiert eine anonyme Funktion.

A_new = filter(lambda x: x[0] != x[1], A) 
1

Sie können es mit list comprehension:

a = [(0, 0), (0, 1), (0, 6), (0, 7), (1, 3), (1, 1), (2, 2)] 
final = [k for k in a if k[0] != k[1]] 

Ausgang:

print(final) 
>>> [(0, 1), (0, 6), (0, 7), (1, 3)] 
Verwandte Themen