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

标签 python list for-loop initialization inline

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

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 的示例数据,就很难通过这样看它来判断, bn

关于python - 在循环初始化的内联中引用一个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15223594/

相关文章:

python - Kivy:执行定时事件的更好方法(骰子滚动动画)

Python:将 "- hrs - min - sec' 字符串更改为分钟十进制

list - 流(无限列表)monad 模拟了哪些效果?

javascript - 从对象数组中获取值

arrays - 索引超出范围将日期转换为字符串组件

python - 如何重新实现Qt生成的Ui_MainWindow

python - Odoo 模块的升级如何进行?

c++ - Vector 中的 1000 多个游戏对象太慢了吗?我的错误是什么?

python - Expect 无法生成两个以上的命令

python - 如何根据给定条件交换字符串的字符?