美文网首页2019--Python
Python第七堂笔记--迭代

Python第七堂笔记--迭代

作者: 六个周 | 来源:发表于2019-01-11 22:48 被阅读34次

什么是迭代


迭代是一个动词,它指的是一种操作,在Python中,就是 for 循环。
迭代与按下标访问数组最大的不同是,后者是一种具体的迭代实现方式,而前者只关心迭代结果,根本不关心迭代内部是如何实现的.

任务
请用for循环迭代数列 1-100 并打印出7的倍数。

for i in range(1, 101):
    if i % 7 == 0:
        print i

索引迭代


Python中,迭代永远是取出元素本身,而非元素的索引。
对于有序集合,元素确实是有索引的。有的时候,我们确实想在 for 循环中拿到索引,怎么办?
方法是使用 enumerate()函数.

迭代dict的value


我们已经了解了dict对象本身就是可迭代对象,用 for 循环直接迭代 dict,可以每次拿到dict的一个key。
如果我们希望迭代 dict 对象的value,应该怎么做?
dict 对象有一个 values() 方法,这个方法把dict转换成一个包含所有value的list,这样,我们迭代的就是 dict的每一个 value。

如果仔细阅读Python的文档,还可以发现,dict除了values()方法外,还有一个 itervalues() 方法,用 itervalues() 方法替代 values() 方法,迭代效果完全一样。

那这两个方法有何不同之处呢?

  1. values() 方法实际上把一个 dict 转换成了包含 value 的list。
  2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。
  3. 打印 itervalues() 发现它返回一个 <dictionary-valueiterator> 对象,这说明在Python中,for 循环可作用的迭代对象远不止 list,tuple,str,unicode,dict等,任何可迭代对象都可以作用于for循环,而内部如何迭代我们通常并不用关心。
    如果一个对象说自己可迭代,那我们就直接用 for 循环去迭代它,可见,迭代是一种抽象的数据操作,它不对迭代对象内部的数据有任何要求。

任务
给定一个dict:
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }
请计算所有同学的平均分。

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }
sum = 0.0
for v in d.itervalues():
    sum = sum + v
print sum/len(d)

迭代dict的key和value


首先,我们看看 dict 对象的 items() 方法返回的值:

>>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
>>> print d.items()
[('Lisa', 85), ('Adam', 95), ('Bart', 59)]

可以看到,items() 方法把dict对象转换成了包含tuple的list,我们对这个list进行迭代,可以同时获得key和value:

...     print key, ':', value
... 
Lisa : 85
Adam : 95
Bart : 59

和 values() 有一个 itervalues() 类似, items() 也有一个对应的 iteritems(),iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple,所以, iteritems() 不占用额外的内存。

任务
请根据dict:
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }
打印出 name : score,最后再打印出平均分 average : score。

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }
sum = 0.0
for k, v in d.iteritems():
    sum = sum + v
    print k, ':', v
print 'average', ':', sum / len(d)

相关文章

  • Python第七堂笔记--迭代

    什么是迭代 迭代是一个动词,它指的是一种操作,在Python中,就是 for 循环。迭代与按下标访问数组最大的不同...

  • Python最基本语法--目录

    Python第一堂笔记--Python变量和数据类型 Python第二堂笔记--List和Tuple类型 Pyth...

  • python学习笔记04

    python学习笔记之04. 迭代器和生成器 迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式...

  • python cookbook学习笔记(1)

    python cookbook学习笔记连载中回调会第4章查看迭代器的用法 反向迭代迭代函数reversed() 4...

  • 大师兄的Python学习笔记(十三): 理解装饰器

    大师兄的Python学习笔记(十二): 常用高级函数大师兄的Python学习笔记(十四): 迭代器、生成器和协程 ...

  • 大师兄的Python学习笔记(十五): Socket编程

    大师兄的Python学习笔记(十四): 迭代器、生成器和协程大师兄的Python学习笔记(十六): FTP与ftp...

  • Think Python—调试 7

    以下摘录自《Think Python》第七章:迭代中的调试一节。详见:http://www.codingpy.co...

  • Python ☞ day 4

    Python学习笔记之 (set)集合 & 迭代器 & 函数 & 匿名函数 & 高阶函数 set set:类似di...

  • Python 中的迭代器

    Python 中的迭代器 Python 3中的迭代器 容器与迭代器 在Python 3中,支持迭代器的容器,只要支...

  • Python的 itertools模块

    在复习Python基本语法的时候,看到了迭代器模块,做一个简单的笔记。 Iterable: 所谓可迭代数据流,即能...

网友评论

    本文标题:Python第七堂笔记--迭代

    本文链接:https://www.haomeiwen.com/subject/cswfdqtx.html