2016-04-30 38 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