如何使用Python, 用一行代码实现求斐波那契数列的前10个数?
a=0
b=1
for i in range(10):
print(b)
a,b=b,b+a
输出:
1
1
2
3
5
8
13
21
34
55
只会写这种For循环的,但输出结果也不对。应该怎么改呢?
如何使用Python, 用一行代码实现求斐波那契数列的前10个数?
a=0
b=1
for i in range(10):
print(b)
a,b=b,b+a
输出:
1
1
2
3
5
8
13
21
34
55
只会写这种For循环的,但输出结果也不对。应该怎么改呢?
您可以使用Python的列表推导式(list comprehension)来在一行代码中生成斐波那契数列的前10个数。这是如何实现的:
fibonacci_numbers = [sum(fibonacci_numbers[max(i-2, 0):i]) for i in range(10)]
print(fibonacci_numbers)
这段代码首先初始化一个空列表fibonacci_numbers
,然后在列表推导式中,对于range(10)
中的每个i
,它计算斐波那契数列的第i
个元素。这是通过取列表的前i-2
个元素(如果i-2
小于0,则取整个列表)并求和来实现的。这就生成了斐波那契数列的前10个数。
然而,请注意,这种方法在第一次迭代时(即i
为0或1时)会尝试访问列表的负索引或0索引,这将导致错误。因此,我们需要使用max(i-2, 0)
来确保索引不会小于0。
最后,print(fibonacci_numbers)
将打印出斐波那契数列的前10个数。
然而,这种方法并不是最有效的方法,因为它需要重复计算斐波那契数列的值。更有效的方法是使用动态规划或递归,但这将需要多行代码。在一行代码中实现这些方法可能会使代码难以阅读和理解。
来自 Python 官方文档