Python 列表理解

标签 python python-3.x algorithm list list-comprehension

我正在学习 python3 列表理解。我了解如何格式化列表理解:[方程式、for 循环、if 过滤语句],但我无法弄清楚如何将三行代码压缩为“方程式”部分的单个方程式。

我取一个数字并将其与自身相加,然后取结果并将其与自身相加等等,以在列表中创建一个数字序列。

我可以通过声明 x = 1 然后循环以下内容来完成此操作:

y = x + x

x = y

谁能帮我把它变成一个单线方程,如果可能的话,我可能会研究的资源可以帮助我将来解决这个问题?

最佳答案

你的算法等同于乘以 2 的幂:

x = 3
res = [x * 2**i for i in range(10)]

# [3, 6, 12, 24, 48, 96, 192, 384, 768, 1536]

要了解为什么会这样,请注意您在 for 循环的每次迭代中将起始数字乘以 2:

x = 3
res = [x]
for _ in range(9):
    y = x + x
    x = y
    res.append(y)

print(res)

# [3, 6, 12, 24, 48, 96, 192, 384, 768, 1536]

正如@timgeb 提到的,您不能在进行过程中引用列表理解的元素,因为在理解完成之前它们不可用。

关于Python 列表理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52541850/

相关文章:

python默认字典参数在函数调用之间被缓存

algorithm - 如何有效地找到图的邻居

vb.net - 获取 key 生成函数的反转

c - 明智地遍历区间内的数字

python - 启动脚本检查是否连接了外部显示器

python - Seaborn KDEPlot - 数据变化不够?

没有 X 的 Cygwin 中的 Python GUI 工具包?

python - Matplotlib Qt5Agg 后端未找到

python - 为什么在 Python 中完全使用 "dict()"?

python - pip3安装pyautogui,错误代码1