我希望能够写出这样的东西:
x = [0]
x = [x[i-1] for i in range(1,10)]
我知道这个例子没有任何意义。但我想知道是否可以使用以前计算的值,同时以这种方式初始化列表。 (也许是某种 lambda 表达式)
这是我需要的实际代码:
x = [(b[i] - sum([(a[i][j] * x[j]) for j in range(i)])) / a[i][i] for i in range(n)]
这当然会产生以下错误:
UnboundLocalError: local variable 'x' referenced before assignment
我知道有这种方法:
x = []
for i in range(n):
x.append((b[i] - sum([(a[i][j] * x[j]) for j in range(i)])) / a[i][i])
但我真的很想知道第一个是否可行。
最佳答案
即使有可能,我认为您也不应该尝试这样做。 “冗长”的三行解决方案已经相当复杂,因为嵌套列表理解甚至不是该行的外部部分。你里面还有一笔钱。
实际上,我什至会把它拆分得更多,以便像这样分别理解列表:
x = []
for i in range(n):
k = sum(a[i][j] * x[j] for j in range(i))
x.append((b[i] - k) / a[i][i])
我相信有可能进一步简化它,但是如果没有任何关于它实际作用的上下文,也没有 a
的示例数据,就很难通过这样看它来判断, b
和 n
。
关于python - 在循环初始化的内联中引用一个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15223594/