列表中的列表(范围的用法)

时间:2016-04-30 15:44:20

标签: python

我是编程和尝试从应用程序中学习的新手。我在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]将为i = 0:5运行6次,对于每个值“i”,我们将有'j = 0:5'。因此,我将得到一个6x6矩阵。这是对的吗?

1 个答案:

答案 0 :(得分: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)]

同样,您可以打印生成的数组以确认此