2016-04-30 36 views
0

我是新來編程,並試圖從申請到學習。我有Python中的函數:名單列表(與範圍的用法)

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)]])部分。這整個陳述將如何執行?有人可以請。說明。

同樣我有:

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

相信表達t[i*6 + j]將運行6倍,對於i = 0:5和用於 'i' 的每個值,我們將有 'J = 0:5'。因此,我會得到一個6x6矩陣。那是對的嗎?

+0

這可以幫助HTTP: //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 

爲了話,這將創建一個元組列表和for循環遍歷每個元組由元組的每個元素拆包到變量ij,你可以用它做你想做什麼都


而且你是正確的假設,你從表達一個6x6的陣列:

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

同樣,你可以只打印結果數組以確認該

+0

太感謝你了! – CRG