国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python的迭代器和生成器使用實例

2020-02-23 06:18:40
字體:
來源:轉載
供稿:網友

一、迭代器Iterators

迭代器僅是一容器對象,它實現了迭代器協議。它有兩個基本方法:

1)next方法
返回容器的下一個元素

2)__iter__方法
返回迭代器自身

迭代器可使用內建的iter方法創建,見例子:
代碼如下:
>>> i = iter('abc')
>>> i.next()
'a'
>>> i.next()
'b'
>>> i.next()
'c'
>>> i.next()
Traceback (most recent call last):
  File "<string>", line 1, in <string>
StopIteration:

class MyIterator(object):
  def __init__(self, step):
  self.step = step
  def next(self):
  """Returns the next element."""
  if self.step==0:
  raise StopIteration
  self.step-=1
  return self.step
  def __iter__(self):
  """Returns the iterator itself."""
  return self
for el in MyIterator(4):
  print el
--------------------

結果:
代碼如下:
3
2
1
0

二、生成器Generators

從Python2.2起,生成器提供了一種簡潔的方式幫助返回列表元素的函數來完成簡單和有效的代碼。
它基于yield指令,允許停止函數并立即返回結果。

此函數保存其執行上下文,如果需要,可立即繼續執行。

例如Fibonacci函數:
代碼如下:
def fibonacci():
  a,b=0,1
  while True:
  yield b
  a,b = b, a+b
fib=fibonacci()
print fib.next()
print fib.next()
print fib.next()
print [fib.next() for i in range(10)]
--------------------

結果:
代碼如下:
1
1
2
[3, 5, 8, 13, 21, 34, 55, 89, 144, 233]

PEP Python Enhancement Proposal Python增強建議

tokenize模塊
代碼如下:
>>> import tokenize
>>> reader = open('c:/temp/py1.py').next
>>> tokens=tokenize.generate_tokens(reader)
>>> tokens.next()
(1, 'class', (1, 0), (1, 5), 'class MyIterator(object):/n')
>>> tokens.next()
(1, 'MyIterator', (1, 6), (1, 16), 'class MyIterator(object):/n')
>>> tokens.next()
(51, '(', (1, 16), (1, 17), 'class MyIterator(object):/n')

例子:
代碼如下:
def power(values):
  for value in values:
  print 'powering %s' %value
  yield value
def adder(values):
  for value in values:
  print 'adding to %s' %value
  if value%2==0:
  yield value+3
  else:
  yield value+2
elements = [1,4,7,9,12,19]
res = adder(power(elements))
print res.next()
print res.next()
--------------------

結果:
代碼如下:
powering 1

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 民县| 沂南县| 贺兰县| 顺平县| 永新县| 易门县| 太和县| 五华县| 三门县| 九龙坡区| 桃江县| 阿图什市| 北辰区| 鄂伦春自治旗| 黄龙县| 华阴市| 广德县| 茶陵县| 白河县| 湘阴县| 胶南市| 蓬安县| 乐至县| 时尚| 临桂县| 杂多县| 金沙县| 江西省| 屏南县| 武胜县| 肃北| 石渠县| 固镇县| 绵阳市| 武穴市| 习水县| 扎囊县| 泽普县| 吴川市| 南丹县| 宁明县|