1. 程式人生 > >Python3菜鳥教程(9):迭代器和生成器的使用

Python3菜鳥教程(9):迭代器和生成器的使用

參考連結

# -*-coding:utf8-*-


a = {'xie', 'shi', 'yong'}

it = iter(a)  # 迭代的初試地址

for i in it:
    print(i, end=' ')
print()

it2 = a.__iter__()  # 迭代的初始地址

for i in it2:  # 在迴圈裡自己呼叫了迭代器後移
    print(i, end=' ')
print()

it2 = iter(a)  # 此時it2已經到了尾部,要重新定義,沒有這劇,後面不會輸出

while True:
    try:
        print(it2.__next__(), end=' ')
    except StopIteration:
        print()
        break


# 自定義的迭代器
class Nums:
    def __iter__(self):
        self.a = 1
        return self

    def __next__(self):
        if self.a == 100:
            raise StopIteration
        x = self.a
        self.a += 1
        return x


num = Nums()
it = iter(num)
for i in range(10):
    print(next(it), end=' ')
print()

for i in it:
    print(i, end=" ")
print()


def fib(n):
    """
    生成器 理解為生成一個序列,返回值是序列的首地址
    :param n:
    :return:
    """
    a, b = 1, 1
    for i in range(n):
        yield a
        a , b = b, a + b


f = fib(10)

for i in range(10):
    print(next(f))