2016-04-30 15 views
0

私はプログラミングをしておらず、アプリケーションから学びたいと思っています。私はpythonで機能を持っている:リストのリスト(forを使用した範囲の使用)

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)]]) 

私は上記の関数では、文のi in range(3)u[0].dx(0)....u[2].dx(2)ためのループを実行するために起こっているが、私はfor i, j in [(0, 1), (0, 2), (1, 2)]])部分を理解していないことを理解しています。この文全体がどのように実行されますか?誰かがplsすることができますか?説明してください。

同様に私が持っている:5と 'I' の各値のために、私たちは 'J = 0:5' を持つことになります:私は表現t[i*6 + j]は、I = 0のために6回実行されます

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

と信じています。したがって、私は6x6の行列を得るでしょう。あれは正しいですか?コードの特定の部分が何を決定する

+0

を確認するために印刷することができます: //stackoverflow.com/questions/4406389/if-else-in-a-list-comprehension – ShadowMitia

答えて

0

自明な方法は、それを実行し、そのコードに使用される値を出力することが通常である。

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

これは、注文すなわち

0, 1 
0, 2 
1, 2 

を印刷しますこれは、タプルのリストを作成し、タプルの各要素を変数ijにアンパックすることによって各タプルに対してforループの繰り返しを作成します。これはあなたが望むことを行うために使用できます


はまた、あなたが表現から6×6の配列を取得することを想定し、正しいです:

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

もう一度、あなただけの結果の配列は、これは、HTTPを助けることができるこの

+0

ありがとうございました! – CRG

関連する問題