【问题标题】:Python List ComprehensionsPython 列表理解
【发布时间】:2018-09-27 16:56:47
【问题描述】:

我正在学习 python3 列表推导。我了解如何格式化列表理解:[方程、for 循环、if 语句进行过滤],但我不知道如何将三行代码压缩成一个方程,用于“方程”部分。

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

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

y = x + x

x = y

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

【问题讨论】:

  • 嗨!欢迎来到 StackOverflow! Python 列表推导实际上是一个非常 simple,如果您的代码是用标准循环编写的(并且循环可以转换为推导)。我建议你从一个普通的 Python 循环开始,然后重新提出你的问题,看看你的问题到底是什么。
  • 并非总是如此,有很多例子表明选项卡式循环优于列表理解。恕我直言

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


【解决方案1】:

您的算法相当于乘以 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 所提到的,您不能在进行过程中引用列表推导的元素,因为在推导完成之前它们不可用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 2014-08-26
    • 2011-08-05
    • 2011-06-15
    • 2016-03-10
    • 2013-07-13
    相关资源
    最近更新 更多