国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python基础教程 > 如何理解python中的迭代

如何理解python中的迭代

头像

爱喝马黛茶的安东尼

2019-12-23 13:18:363280浏览 · 0收藏 · 0评论

迭代:是通过重复执行的代码处理相似的数据集的过程,并且本次迭代的处理数据要依赖上一次的结果继续往下做,上一次产生的结果为下一次产生结果的初始状态,如果中途有任何停顿,都不能算是迭代。例如:

(1)非迭代例子

loop = 0
while loop < 3:
    print("Hello world!")
    loop += 1

(2)迭代例子

loop = 0
while loop < 3:
    print(loop)
loop += 1

例1仅是循环3次输出" Hello world!",输出的数据不依赖上一次的数据,因此不是跌代。

在python中通常用for …in遍历元组、列表、字典。而for … in后面需要那个可迭代对象。那么在python中什么是可迭代对象呢?

在python中

(1)可迭代对象(iterable),是指拥有了__iter__的内置方法的对象。

(2)迭代器(iterator) ,是指拥__iter__与__next__方法的对象。

在这里__iner__需要返回一个迭代器对象,__next__方法可以取出值,并停留到取值的位置,以便可取出下一个值。

在这里可以看出一个迭代器一定是一个可迭代对象,而一个可迭代对象不一定是迭代器。

在python中可以用isinstance(object,Iterable)判断对象是否为可迭代对象。用isinstance(object,Iterator)判断对象是否为迭代器。

In [1]: from collections import Iterable
In [2]: from collections import Iterator
In [3]: isinstance(1,Iterable)
Out[3]: False
In [4]: isinstance(1,Iterator)
Out[4]: False
In [5]: isinstance((1,2),Iterable)
Out[5]: True
In [6]: isinstance((1,2),Iterator)
Out[6]: False
In [7]: class D():
   ...:     def __iter__(self):
   ...:         pass
   ...:     def __next__(self):
   ...:         pass
   ...:     
In [8]: d = D()
In [9]: isinstance(d,Iterator)
Out[9]: True
In [10]:

python实现迭代:列如,用迭代实现斐波那契数列:

class Fibonacci(object):
    def __init__(self,all_num):
        """初始化类属性"""
        #定义一个实例属性,存放要实现斐波那契数列的个数
        self.all_num = all_num
        
        #定义count实例属性,作为迭代的退出条件判断
        self.count = 0
        
        #实现斐波那契数列定义a=0,b=1
        self.a = 0
        self.b = 1
    def __iter__(self):
        """在这里self所指3对象本身是一个
        迭代器,所以可以返回自身
        """
        return self
    def __next__(self):
        """
        next,实现迭代返回结果
         
        """
        #判断输出的数列个数,是否小于需要的数列个数
        if self.count < self.all_num:
            
            #rect最终要输出的斐波那契数列
            rect = self.a
            
            #在这里重复让a=b,b=a+b,来实现斐波那契数列
            self.a, self.b = self.b, self.a + self.b
            self.count += 1
            return rect
        else:
            #当迭代遇到StopIteration异常时便会停止迭代
            raise StopIteration
fibonacci = Fibonacci(10)
for fibo_num in fibonacci:
    print(fibo_num)

迭代:通过存储一种生成方式,而不是生成结果,来实现数据存储。从而极大的节约了存储空间。

注意:

在python2.x中 range()函数后面存的是一个列表,xrange()存的是一个可迭代对象。而在python3.x中range()存的是一个迭代对象,相当于python2.x中的xrange()。

众多python培训视频,尽在python学习网,欢迎在线学习!

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

黑色蕾丝透视露胸旗袍连衣裙| 老公在怀里吃奶像个小孩子| 《指尖湿热》作者:糖醋排骨| 《如狼似虎的女人》大结局| 家族轮换之共乐的日子最新章节更,| 大雷| 成人猫咪最新地域网名是什么啥| 日本M码和欧洲码的区别AS.| B站未过审的跳舞视频| 美女和帅哥一起努力生产豆浆的视.| 狗配人的大片| 三男一女CP免费观看电视剧大全 | 女生给男生吃小头头| 《出差的日子》叶爱| 《性呻吟》伦理| 美国伦理性淫梦| 老公拿狗给我配| 美国色情巜春药2| 《一滴都不许漏》何泽城林荫| 扌桑小孩的辶鬲的历史背景| 欧美电影免费观看大全能出没 | 韩剧《我的瑜伽教练》| 《完美邻居2》电影在线观看| 老师下面太紧拔不出来怎么办| 《炸裂吧!巨棒》免费阅读漫画| 五十度灰2未删减版| 去何地电影| 小妹妹爱大棒棒免费观看电视剧| 人与动物胶配方视频荷尔蒙| 免费高清在线观看免费的PPT软... | 老公拿狗给我配| 太粗大深好疼快拔出去| 懵懂少女的挨日常TXT百度云资..| 挺进朋友人妻张婉莹身体| 美女热舞| 中中漫画免费漫画弹窗入口 | YSL口红水蜜桃色号8223| 《有夫之妇的秘书》演员表| 妈妈がだけの心に漂う| 中中漫画免费漫画弹窗入口 | 头号前妻剧情介绍