python - 如何使用列表理解创建斐波那契数列?

标签 python list-comprehension fibonacci

我是 python 的新手,我想知道是否可以使用 python 的列表理解功能生成斐波那契数列。我不知道列表理解是如何实现的。 我尝试了以下操作(目的是生成前五个斐波那契数):

series=[]
series.append(1)
series.append(1)
series += [series[k-1]+series[k-2] for k in range(2,5)]

这段代码抛出错误:IndexError: list index out of range

让我知道是否有可能使用列表理解生成这样的系列。

最佳答案

您不能那样做:列表理解 首先求值,然后将该列表添加到系列。所以基本上就像你会写的那样:

series=[]
series.append(1)
series.append(1)
<b>temp = </b>[series[k-1]+series[k-2] for k in range(2,5)]
series<b> += temp</b>

不过,您可以通过使用列表理解作为强制副作用的一种方式来解决这个问题,例如:

series=[]
series.append(1)
series.append(1)
<b>[series.append(series[k-1]+series[k-2]) for k in range(2,5)]</b>

请注意,我们这里不会将结果添加到系列中。列表理解仅用于在 series 上调用 .append。然而,有些人认为带有副作用的列表推导式很容易出错:它的声明性不是很强,如果做得不仔细,往往会引入错误。

关于python - 如何使用列表理解创建斐波那契数列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42370456/

相关文章:

python - 如何使用redis存储和检索字典

python - 将 for 循环转换为列表理解

python - 通过 Python 查找和分组字谜

python - if else 检查 Python 中的每个条件,即使一个条件的计算结果为真

python - pandas - 如果包含列表中的值,则删除带有值列表的行

python - 三角形/几何彩虹螺旋

python - 为什么你可以在 for 循环中循环一个隐式元组,而不是 Python 中的一个理解?

haskell - 递归列表 zipWith 的空间泄漏

algorithm - 如何使用皮萨诺周期求出斐波那契数列之和的最后一位数字?

c# - 偶数斐波那契数之和