python-迭代器

迭代器

iterate迭代实现了__iter__内置特殊方法

使用迭代器与列表的区别:

  1. 可能只需要返回下一个值就可以了,并不需要一次获取所有数据

  2. 列表一次获取所有值占用内存高,而迭代器一次返回一个值,占用内存低

    1
    2
    3
    4
    5
    6
    7
    8
    9
    class Fibs():
    def __init__(self):
    self.a = 0
    self.b = 1
    def __next__(self):
    self.a, self.b = self.b, self.a + self.b
    return self.a
    def __iter__(self):
    return self
  3. 实现了__iter__的对象是可迭代的,实现了__next__的对象是迭代器。

    1
    2
    3
    4
    5
    6
    fibs = Fibs()

    for f in fibs:
    print(f)
    if f > 1000:
    break

从迭代器创建序列

虽然可以使用序列,但是迭代器其实也可以创建序列

1
2
3
4
5
6
7
8
9
10
11
12
13
class TestIterator():
def __init__(self):
self.a = 0
def __next__(self):
self.a += 1
if self.a > 1000:
raise StopIterator
def __iter__(self):
return self
test = TestIterator()
# 使用list方法创建序列
list(test)
print(list(test))