我是 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/