2016-04-30 4 views
0

Ich bin neu in der Programmierung und versuche, von der Anwendung zu lernen. Ich habe eine Funktion in Python:Liste in Liste (Verwendung des Bereichs mit für)

def eps(u):   
    return as_vector([u[i].dx(i) for i in range(3)] + [u[i].dx(j) + u[j].dx(i) for i, j in [(0, 1), (0, 2), (1, 2)]]) 

Ich verstehe, dass in der obigen Funktion, die Anweisung i in range(3) wird eine Schleife für u[0].dx(0)....u[2].dx(2) laufen, aber ich verstehe nicht, den for i, j in [(0, 1), (0, 2), (1, 2)]]) Teil. Wie wird diese gesamte Anweisung ausgeführt? Kann jemand pls. erklären.

Ebenso habe ich:

def tangent(t): 
    return as_matrix([[t[i*6 + j] for j in range(6)] for i in range(6)]) 

Ich glaube, der Ausdruck t[i*6 + j] 6-mal für i = 0 laufen: 5 und für jeden Wert von 'i', werden wir ': 5 j = 0' haben. Daher werde ich eine 6x6 Matrix bekommen. Ist das korrekt?

+0

bestätigen Diese http helfen könnte: //stackoverflow.com/questions/4406389/if-else-in-a-list-comprehension – ShadowMitia

Antwort

0

Eine triviale Weise zu bestimmen, was ein bestimmtes Stück Code ist, ist es in der Regel zu laufen und die Werte in diesem Code verwendet drucken:

for i, j in [(0, 1), (0, 2), (1, 2)]: 
    print (i, j) 

Dieser druckt

0, 1 
0, 2 
1, 2 

Mit anderen Worten erzeugt dies eine Liste von Tupeln und die for-Schleife iteriert über jedes Tupel, indem jedes Element des Tupels in die Variablen i und j entpackt wird, die Sie verwenden können, um zu tun, was immer Sie wollen


Auch sind Sie richtig in der Annahme, dass Sie aus dem Ausdruck ein 6x6-Array erhalten:

[[t[i*6 + j] for j in range(6)] for i in range(6)]

Auch hier könnte man einfach das resultierende Array drucken diese

+0

Vielen Dank! – CRG

Verwandte Themen