从n为大的无限生成器中获取第n个元素

时间:2017-06-18 14:01:30

标签: python python-3.x generator series infinite

我正在尝试使用Python 3解决Project Euler问题,我遇到了这个问题。我想找到生成器生成的无限系列中的第n个元素,其中n = 10 15 这里是生成器:

def test_gen():
  yield 1
  yield 1
  sum_till_now = 1
  while True:
    sum_till_now += sum_of_digits(sum_till_now)
    yield sum_till_now

该系列是1,1,2,4,8,16,23,28 ......并且由发电机精细生产

我尝试了以下方法:

def cal():
  for index, item in enumerate(a):
    if index == 1000000000000000:
      print(item)
      return

但解决它需要太多时间。当n非常大时,有没有更快的方法来找到生成器的第n个元素?如果我的发电机效率低下,请告诉我。如果我的方法本身是错误的,我不想要问题的正确答案。谢谢你的帮助。

0 个答案:

没有答案