迭代器

迭代器是最近才加入Python中的,在数学应用中特别有用。下面是几个例子,更多内容请参见PyT。我们生成一个在不超过$10000000$的非负整数的平方数上的迭代器。

  1. sage: v = (n^2 for n in xrange(10000000)) # py2
  2. sage: v = (n^2 for n in range(10000000)) # py3
  3. sage: next(v)
  4. 0
  5. sage: next(v)
  6. 1
  7. sage: next(v)
  8. 4

我们新建一个在形如$4p+1$($p$为素数) 的素数上的迭代器, 并观察前面几个。

  1. sage: w = (4*p + 1 for p in Primes() if is_prime(4*p+1))
  2. sage: w # 输出的0xb0853d6c为随机的十六进制数
  3. <generator object at 0xb0853d6c>
  4. sage: w.next()
  5. 13
  6. sage: w.next()
  7. 29
  8. sage: w.next()
  9. 53

特定的环,如有限域和整数环上都有迭代器:

  1. sage:[x for x in GF(7)]
  2. [0, 1, 2, 3, 4, 5, 6]
  3. sage: W = ((x,y) for x in ZZ for y in ZZ)
  4. sage: W.next()
  5. (0, 0)
  6. sage: W.next()
  7. (0, 1)
  8. sage: W.next()
  9. (0, -1)