Skip to main content
 首页 » 编程设计

python之在循环初始化的内联中引用一个列表

2025年05月04日15mayingbao

我希望能够写出这样的东西:

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。