首页 > 代码库 > Python 迭代

Python 迭代

索引迭代

一、有序数集,获取value,方法是直接for..in

二、有序数集,同时获取key、balue,方法是使用 enumerate() 函数:

>>> L = [‘Adam‘, ‘Lisa‘, ‘Bart‘, ‘Paul‘]
>>> for index, name in enumerate(L): ... print index, ‘-‘, name ... 0 - Adam 1 - Lisa 2 - Bart 3 - Paul

三、dict对象,获取key方法是直接for..in

四、dict对象,获取value方法是使用value()、itervalues()

>>> d = { ‘Adam‘: 95, ‘Lisa‘: 85, ‘Bart‘: 59 }
>>> print d.values()
[85, 95, 59]
>>> for v in d.values(): ...    print v 85 95 59
 

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

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对象,同时获取key、value方法是使用items()

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

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

>>> for key, value in d.items():
...     print key, ‘:‘, value
... 
Lisa : 85
Adam : 95
Bart : 59

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

Python 迭代