【发布时间】:2014-06-22 18:51:47
【问题描述】:
我在 python 中使用生成器生成斐波那契数列(生成器工作正常)
问题是我不知道如何获取第一个 n 位变量并打印它。
print list(itertools.takewhile(lambda x: len(str(x))<=3,fib_function()))
将返回
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987]
换句话说,它返回所有三位数字项,这是不必要的,因为我只想要最多并包括 144。 将其限制为两个不会生成下一个,我会需要,而且我似乎无法欺骗它再进行一次迭代。
此外,此代码将打印整个序列,而不仅仅是最后一次出现。我浏览了文档,但似乎没有任何建议。我可以忍受它,但如果它这样做会更好。
(注:这是项目欧拉问题25:生成第一个100位斐波那契数)
【问题讨论】:
-
关于为什么需要使用 itertools 的任何具体原因?一个简单的while循环也应该可以正常工作
-
@vz0 的印象是它更快,不是吗?
-
IHDK,你应该测量它。请记住,欧拉程序大多是您为解决特定练习而编写的一次性代码。程序越简单越好。
标签: python