2017-12-09 3 views
0

Also das Problem ist, dass ich eine Liste habe, die aus Paaren von Zahlen [(0,0), (0,1) (0,2) ... usw. besteht und ich würde gerne wissen wie man aus dieser Liste alle Paare mit den gleichen Nummern löscht. Liste wurde mit dieser Funktion erstellt.Listen in Python 3

l1 = [] 
def fun2(x,y): 
    for x in range(x+1): 
     for y in range(y+1): 
      l1.append((x,y)) 
    return l1 
+0

schreiben Sie Ihre erwartete Ausgabe –

+0

Dieser erzeugt keine Duplikate – user1767754

+2

@ user1767754: Ich thik nicht, dass es zu doppelten Paaren. Es geht um Paare mit doppelten Zahlen. Z.B. '(0, 0)'. –

Antwort

0

Methode 1: Verwenden list comprehnsion:

lst = [c for c in l1 if c[0] != c[1]] 

Methode 2: manuell die Liste Gebäude:

lst = [] 
for elem in l1: 
    if elem[0] != elem[1]: 
     lst.append(elem) 
5

Sie doppelte Tupelelemente vermeiden kann, während die Liste zu erzeugen. Fügen Sie einfach ein if:

def fun2(x, y): 
    result = [] 
    for a in range(x+1): 
     for b in range(y+1): 
      if a != b: 
       result.append((a,b)) 
    return result 

Dies könnte auch kurz und bündig als Liste Verständnis geschrieben mehr werden:

result = [(a, b) for a in range(x+1) for b in range(y+1) if a != b] 

Eine weitere Option ist die Verwendung itertools.product():

from itertools import product 

result = [(a, b) for a, b in product(range(x+1), range(y+1)) if a != b] 

Entfernen Artikel nachträglich ist auch möglich mit einem Listenverständnis:

result = [pair for pair in result if pair[0] != pair[1]] 

, die eine neue Liste ohne die doppelten Elemente erstellt und dann an result erneut bindet. Sie können die Liste anstelle mit überschreiben:

result[:] = [pair for pair in result if pair[0] != pair[1]]