2016-12-13 4 views
-1

Ich habe diese fonction gefunden, aber ich will nichtitertools Produkt der Liste

A = [[1,2],[3,4]] 
print list(product(*A)) 
[(1, 3), (1, 4), (2, 3), (2, 4)] 

Ich würde in der Antwort nur, dass unten haben möchte

[(1, 4),(2, 3)] 

Wie kann ich das tun, bitte?

In der Tat, ich möchte keine Nummer an der gleichen Stelle in der ursprünglichen Liste in meiner endgültigen Liste haben.

Ich habe gemacht, dass:

def afficherListe(A): 
n=len(A) 
B=[] 
for i in range (0,n,1): 
    for j in range (0,n,1): 
     if i!=j: 
      B.append(A[i][j]) 
return B 

Aber es nicht, dass ich nur funktioniert [2,3] in Antwort ...

+0

Am Ende dieses exemple, ich will zu haben [(1,4), (2,3)] aber mit meiner Funktion "AfficherListe" habe ich nur (2,3) und ich weiß nicht, wo ich einen Fehler in meiner Funktion gemacht habe ... –

+0

' (2,3) 'ist das einzige Paar, das deiner angegebenen Bedingung entspricht. Was du stattdessen zu haben scheinst, sind alle Paare '(x, y)', wobei die Position von 'x' in der ursprünglichen Liste von der Position von' y' in der ursprünglichen Liste abweicht, nicht alle Paare, in denen 'x',' y 'unterscheiden sich von ihren ursprünglichen Positionen. –

+0

Sie müssen genau klären, was Sie zu tun versuchen. Zum Beispiel, was sollte die Ausgabe sein, wenn "A = [[1,2,3], [4,5,6], [7,8,9]]"? –

Antwort

1

Ich denke, dass vielleicht wollen Sie alle Tupel erhalten aus von 1 Artikel aus jeder Spalte und jeder Zeile, wie in einer Determinantenberechnung. Wenn ja:

from itertools import permutations 

def afficherListe(A): 
    """A is a square matrix. Returns all tuples used in det(A)""" 
    n = len(A) 
    return [tuple(A[i][j] for i,j in enumerate(p)) for p in permutations(range(n))] 

#tests: 
A = [[1,2],[3,4]] 
B = [[1,2,3],[4,5,6],[7,8,9]] 
print(afficherListe(A)) 
print(afficherListe(B)) 

Ausgang:

[(1, 4), (2, 3)] 
[(1, 5, 9), (1, 6, 8), (2, 4, 9), (2, 6, 7), (3, 4, 8), (3, 5, 7)] 
1
[(a,b) for a in A[0] for b in A[1] if A[0].index(a)!=A[1].index(b)] 

Eingang:

A = [[1, 2], [3, 4]] 

heraus gesetzt:

[(1, 4), (2, 3)] 
Verwandte Themen