VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • python学习之---迭代器与生成器

什么是迭代器
可迭代对象:
可以通过for循环来实现遍历,例如list、string、dict
迭代器:
不仅可以使用for循环,还可以使用next()方法、iter()
next():获取容器中的下一个元素,当容器中没有可访问的元素后,next()方法将会抛出一个StopIteration异常终止迭代器
iter():
内建函数获取迭代器对象
如何判断是迭代器
使用isinstance()函数来判断一个对象是否是一个已知的类型

from collections import Iterable, Iterator
# isinstance(对象, Iterable) 是否是可迭代的
# isinstance(对象, Iterator) 是否是迭代器
mylist = [1, 2, 3]
print(isinstance(mylist, Iterable))
print(isinstance(mylist, Iterator))

什么是生成器
特殊的迭代器,通过函数来创建
使用yeild来一次返回一个结果,而不是return
生成器在执行到yeild语句时,会暂停生成器函数执行,并在下次执行时继续从上次暂停的位置开始
如何判断是否是生成器
同上通过isinstance()函数

斐波那契数列的各种实现方法
回到顶部
for循环实现法

n = int(input())
if n < 2:
   print(n)
else:
  dp = [-1] * (n + 1)
  dp[0] = 0
  dp[1] = 1
  for i in range(2, n + 1):
      dp[i] = dp[i - 1] + dp[i - 2]
  print(dp[n])

回到顶部
递归实现法

def fib(n):
    if n < 2:
        return n
    else:
        return fib(n - 1) + fib(n -2)
s = int(input())
print(fib(s))

回到顶部
迭代器实现法

class FibonacciIterator:
    def __init__(self):
        self.first = 1
        self.second = 1

    def method(self):
        pass

    def __iter__(self):
        return self

    def __next__(self):
        result = self.first + self.second
        self.first = self.second
        self.second = result
        return self.first


if __name__ == '__main__':
    fibo = FibonacciIterator()
    for i in range(int(input()) - 1):
        print(next(fibo))

要一直努力这是做重要的

来源:https://www.cnblogs.com/piaoduo-yf/p/18309931


相关教程