zoukankan      html  css  js  c++  java
  • python之迭代

    在Python中,如果给定一个listtuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration)。

    在Python当中的迭代是很抽象的,它与java不同,它是通过for..in来实现的:

    for (i=0; i<list.length; i++) {
        n = list[i];
    }

    这个是java代码。

    >>> for i in range(1,101):
        if i % 7 ==0:
            print (i)
    
            
    7
    14
    21
    28
    35
    42
    49
    56
    63
    70
    77
    84
    91
    98

    这个是python当中的迭代

    可见在Python的迭代当中省略了很多的东西。

    因为 Python 的 for循环不仅可以用在list或tuple上,还可以作用在其他任何可迭代对象上。

    因此,迭代操作就是对于一个集合,无论该集合是有序还是无序,我们用 for 循环总是可以依次取出集合的每一个元素。

    我们现在已经知道的集合有:

    有序的:list,tuple,str和unicode

    无序的是:set

    无序集合并且有key-value对:Dict

    Python中,迭代永远是取出元素本身,而非元素的索引。

    对于有序的集合我们有的时候确实会出现想要迭代出索引好的情况,这个时候便需要一个特殊的函数来解决问题了。

    这个函数就是enumerate()函数:

    >>> L = ['Adam','Paul','Lisa','Dean']
    >>> for index, name in enumerate(L):
        print (index,":",name)
    
        
    0 : Adam
    1 : Paul
    2 : Lisa
    3 : Dean

    这里的迭代索引号并非是真的迭代索引号,而是函数把L变成一个tuple来进行迭代。

    也就是把:

    ['Adam','Paul','Lisa','Dean']

    变成了类似于:

    ([0,'Adam'],[1,'Paul'],[2,'Lisa'],[3,'Dean'])

    因此我们迭代的每一个元素其实是一个tuple

    只是这样写就简化了写法。

    我们知道迭代是一种for的循环,但是在dict当中呢我们拥有key-value这样的对。我们在迭代value的时候就需要用到key。

    不过我们的python提供了一个value的方法:来简化这种方式:

    >>> d = {'Dean':95,'Sam':97}
    >>> print (d.values())
    dict_values([97, 95])
    >>> for l in d.values():
        print (l)
    
        
    97
    95

    其实我们从上面的输出结果可以看到我们的values函数其实是把我们的dict变成了list来进行索引的。(这个是2.0的说法,在3.0的版本当中已经不是list了,而是view,包括keys(),items()函数都不是list,而是view)

    在python的函数使用手册上面还拥有一种itervalues()的方法(这个是2.0的手册,在3.0的版本当中呢已经不存在itervalue()这个函数了,包括iterkeys()等都被删除了)

    如果一个对象说自己可迭代,那我们就直接用 for 循环去迭代它,可见,迭代是一种抽象的数据操作,它不对迭代对象内部的数据有任何要求。

    在python当中,如果我们需要同时迭代key和value我们需要用到items()函数。

    >>> d = {'Dean':95,'Sam':97}
    >>> for key,value in d.items():
        print (key,':',value)
    
        
    Sam : 97
    Dean : 95


  • 相关阅读:
    我们是怎么管理QQ群的
    2014年10月【下】-前端开发半月刊
    我们一般的前端开发流程
    没有素描色彩基础适合学习UI吗,如果可以,该怎么学?
    豪情-关于生活工作学习之感悟-第一篇
    网页插件学javascript还是jquery好啊?
    我们平时是怎么写html和css的?
    2014年10月【上】-前端开发半月刊
    2014年9月-前端开发月刊
    固定滚动菜单
  • 原文地址:https://www.cnblogs.com/chang1203/p/5837344.html
Copyright © 2011-2022 走看看