什么是迭代?

在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用户使用文档,就不在这里一一列出。

python学习第八天 -- 迭代的更多相关文章

  1. Python学习笔记014——迭代工具函数 内置函数enumerate()

    1 描述 enumerate() 函数用于将一个可遍历的数据对象(如列表.元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中. 2 语法 enumerate(sequ ...

  2. Python学习笔记(迭代、模块扩展、GUI 、编码处理等)

    PythonIDLE中的编码处理 http://www.tuicool.com/articles/NbyEBr 原文标题:Python中实际上已经得到了正确的Unicode或某种编码的字符,但是看起来 ...

  3. Python学习笔记(迭代,列表解析,生成器)

    迭代(iterable):支持每次返回自己所包含一个对象的 iter()得到迭代器,.next()遍历列表. 列表解析:根据已有列表高效生成列表的方式. 生成器(Generator): 通过列表生成式 ...

  4. python学习第八天

    解析库之bs4的基本使用方法 ''' pip install beautifulsoup4#安装bs4 pip install lxml#安装lxml ''' html_doc = "&qu ...

  5. Python学习笔记014——迭代工具函数 内置函数zip()

    1 描述 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表. 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操 ...

  6. python学习第八天二进制和字符编码有关联

    计算机所能识别只有0,1这两种状态,但是我们人类用字母,汉字,还有其他语言,那么怎么和计算机进行沟通呢,python编程语言最早unicode,现在统一用utf8,UTF8通用的编码语言,所有语言都包 ...

  7. Python学习第八天(os)

    os主要是实现文件夹的创建和管理功能 os.mkdir(path) 创建目录 os.chdir(path)改变当前工作目录 os.fchdir() 通过文件描述符改变工作目录 os.chroot() ...

  8. python学习第八天--异常和异常处理

    Exception 常用异常: AssertionError 断言语句失败 AttributeError 尝试访问未知的对象属性 IndexError 索引超出序列值 keyError 查找一个不存在 ...

  9. 《Python学习手册 第五版》 -第14章 迭代和推导

    承接上一章for循环的讲解,迭代和推导,是对for循环的一种深入的探索和扩展 本章重点内容 1.迭代 1)什么是迭代?都有哪些分类 2)常规的使用方法 3)多遍迭代器VS单遍迭代器 2.列表推导 1) ...

随机推荐

  1. 转:MFC 的程序中GetAt()的理解

    BYTE 是 1字节长度 的 整型, int 是 4 字节长度 的 整型. CString::GetAt(0); 就是把 一个 CString 对象里 的字符串 中的第一个字符,把它的ASCII 值 ...

  2. 从win7到mac os再到win10,体验总结

    首先介绍自己的身份,软件工程毕业,现在IT男一枚,php程序员(前端必须会的啦). 原先自己用的是win7系统,大学四年都在用,所以习惯了.开发方式也是传统式的,以文件概念为主(就是手动管理文件),版 ...

  3. poj 3628 Bookshelf 2

    http://poj.org/problem?id=3628 01背包 #include <cstdio> #include <iostream> #include <c ...

  4. HDOJ(HDU) 1407 测试你是否和LTC水平一样高(暴力)

    Problem Description 大家提到LTC都佩服的不行,不过,如果竞赛只有这一个题目,我敢保证你和他绝对在一个水平线上! 你的任务是: 计算方程x^2+y^2+z^2= num的一个正整数 ...

  5. java随机数生成器

    一.java.lang.Math.Random 调用这个Math.Random()函数能够返回带正号的double值,取值范围是[0.0,1.0)的左闭右开区间,并在该范围内(近似)均匀分布. 二.j ...

  6. HBase的rowkey的设计原则

    HBase是三维有序存储的,通过rowkey(行键),column key(column family和qualifier)和TimeStamp(时间戳)这个三个维度可以对HBase中的数据进行快速定 ...

  7. SQL-MICK基础

    /*Select语句完整的执行顺序:1.from子句组装来自不同数据源的数据:2.where子句基于指定的条件对记录行进行筛选:3.group by子句将数据划分为多个分组:4.使用聚集函数进行计算: ...

  8. spring + shiro + cas 实现sso单点登录

    sso-shiro-cas spring下使用shiro+cas配置单点登录,多个系统之间的访问,每次只需要登录一次,项目源码 系统模块说明 cas: 单点登录模块,这里直接拿的是cas的项目改了点样 ...

  9. facebook分享遇到的错误解决方法

    *** Terminating app due to uncaught exception 'InvalidOperationException', reason: ''App ID not foun ...

  10. java并发编程--Runnable Callable及Future

    1.Runnable Runnable是个接口,使用很简单: 1. 实现该接口并重写run方法 2. 利用该类的对象创建线程 3. 线程启动时就会自动调用该对象的run方法 通常在开发中结合Execu ...