迭代器的应用

迭代器的应用

1, 迭代器的优点

  • 在python2中,range直接返回一个列表,一次性全部返回,占用大量的内存空间和时间
  • 在python2中,xrange(10)会立刻返回,保存的是生成值的方式,占用极小内存空间
  • 在python3中,range()直接替换了python2中的xrange(),占用极小内存空间,保存的是生成值的方式

2, 斐波那契数列实现

  • 示例
    # 斐波那契数列实现
    	a = 0
    	b = 1
    	l = []
    	l.append(a)
    	l.append(b)
    	for i in range(10):
    	    a, b = b, a + b
    	    l.append(a)
    	
    	print(l)
    
    

3, 迭代器实现斐波那契数列

  • vim修改所有的全局变量
    • :%/要修改的变量/修改后的值/g
  • 并不是只有for循环可以接受可迭代对象,list,tuple也能接受,当进行类型转换的时候,重新生成一个新的列表或者元组,调用可迭代对象里面的__next__方法,取出里面的值,然后进行填充
    class Febonacci(object):
        def __init__(self, num):
            self.num = num
            self.current_num = 0
            self.a = 0
            self.b = 1
            pass
    
        def __iter__(self):
            # 该方法必须返回一个迭代器的对象
            return self
            pass
    
        def __next__(self):
            if self.current_num < self.num:
    
                ret = self.a
                self.a, self.b = self.b, self.a + self.b
                self.current_num += 1
                return ret
    
            else:
            	# 不然会一直返回NOne
                raise StopIteration
    
    fibo = Febonacci(10)
    for i in fibo:
        print(i)
    
    
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值