• python学习第八天 -- 迭代


    什么是迭代?

    在python语言中,迭代的意思就是通过for循环遍历一个有序/无序的集合。

    迭代是通过 for x in 集合 来完成的。

    前面有提到python中有哪些集合,现在我们来梳理一下:

    (1)有序集合:list ,tuple,str 和unicode。

    (2)无序集合:set

    (3)无序集合并且具有key-value对应关系:dict

    直接举个代码例子:

    for循环迭代数列 1-10并打印出5的倍数。
    >>> L = range(1,11)
    >>> for number in L:
    ...     if number % 5 == 0:
    ...         print number
    ...
    5
    10

    索引迭代

    前面已经有讲过List的用法,可以直接通过索引去到List的元素。但是有时候也要取得索引的值,如何取得?

    python针对List提供了 enumerate() 函数。

    直接举个代码例子:

    >>> L = ['zhangsan','lixi','wangwu']
    >>> for index,people in enumerate(L):
    ...     print index,':',people
    ...
    0 : zhangsan
    1 : lixi
    2 : wangwu

    解析:enumerate函数是将['zhangsan','lixi','wangwu']变化成了一个tuple类型。

    ['zhangsan','lixi','wangwu']
    变成了
    [(0,'zhangsan'),(1,'lixi'),(2,'wangwu')]

    所以实际上每一个迭代返回都是一个tuple类型。用如下代码证明:

    >>> L = ['zhangsan','lixi','wangwu']
    >>> for t in enumerate(L):
            index = t[0]
            people = t[1]
    ...     print index,':',people
    ...
    0 : zhangsan
    1 : lixi
    2 : wangwu

    补充:介绍zip()函数:

    zip()函数可以把两个 list 变成一个 list:

    >>> zip([10, 20, 30], ['A', 'B', 'C'])
    [(10, 'A'), (20, 'B'), (30, 'C')]

    任务:

    在迭代 ['A', 'B', 'C', 'D'] 时,如果我们想打印出顺序 - 字母(名次从1开始),请考虑如何在迭代中打印出来。提示:考虑使用zip()函数和range()函数

    L = ['A', 'B', 'C', 'D']
    for index, name in zip(range(1,len(L)+1),L):
        print index, '-', name

    迭代dict

    之前内容有提过 ,dict是一个无序并且带key-value的集合。可以通过索引取得key值。但是怎样取得key对应的value值呢?

    dict对象有一个values()方法,可以把dict转换为一个带value元素的list。

    >>> d={'zhangsan':45,'lixi':56,'wangwu':90}
    >>> for va in d.values():
    ...     print 'score:',va
    ...
    score: 56
    score: 45
    score: 90

    PS:在一些教程中有提过 itervalues()函数,但是这个函数在python 3.x版本已经抛弃使用了。不在这里过多讲解。


    如果要同时取得key 和value的值,如果迭代取得?

    dict对象有一个items()方法,可以把dict对象转换成了包含tuple的list。

    //取得平均分
    >>>d = { 'zhangsan': 95, 'lixi': 85, 'wangwu': 59}
    
    >>>sum = 0.0
    >>>for name, v in d.items():
    ....    sum = sum + v
    ....    print name,':',v
    print 'average', ':', sum/len(d)

    小结:python的一些集合对象迭代的在一些地方还是比较实用的,但是python 3.x有些attribute抛弃了。大家可以参考python 3.x用户使用文档,就不在这里一一列出。

  • 相关阅读:
    GitLab 介绍
    git 标签
    git 分支
    git 仓库 撤销提交 git reset and 查看本地历史操作 git reflog
    git 仓库 回退功能 git checkout
    python 并发编程 多进程 练习题
    git 命令 查看历史提交 git log
    git 命令 git diff 查看 Git 区域文件的具体改动
    POJ 2608
    POJ 2610
  • 原文地址:https://www.cnblogs.com/nx520zj/p/5688087.html
Copyright © 2020-2023  润新知