Python3 迭代

本文介绍了Python3中的迭代概念,包括对list、tuple、dict的迭代操作。讲解了enumerate函数用于获取元素索引,zip函数结合range实现索引与元素的结合。还对比了dict的values()和itervalues()方法的区别,并给出了使用items()方法同时迭代key和value的示例。最后提出了计算dict中所有值平均分的任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是迭代

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

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

迭代索引

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

对于有序集合,元素是有索引的,可通过enumerate()函数拿到索引。

enumerate()函数:

>>> L=['Ada','Lisa','Ben','Paul']
>>> for index,name in enumerate(L):
	print (index,'-',name)

	
0 - Ada
1 - Lisa
2 - Ben
3 - Paul

使用enumerate()函数,我们可以在for循环中同时绑定索引index和name。实际上,enumerate()函数是把:

['Ada','Lisa','Ben','Paul']

变成了元组(tuple):

[(0,'Ada'),(1,'Lisa'),(2,'Ben'),(3,'Paul')]

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

在迭代['Ada','Lisa','Ben','Paul']时,如果想打印出名次-名字(名次从1开始),考虑使用zip()函数和range()函数

G_list=[1,2,3,4]
N_list=['Ada','Lisa','Ben','Paul']
for g,name in zip (G_list,N_list):
    print(g,'-',name)

输出结果:

1 - Ada
2 - Lisa
3 - Ben
4 - Paul

迭代dict的value

dict对象有一个values()方法,这个方法把dict转换成一个包含value的list,这样我们迭代的就是每一个value:

d={'Adam':95,'Lisa':85,'Ben':75}
print(d.values())

dict_values([95, 85, 75])


for v in d.values():
    print(v)
95
85
75

在python2中,除了values方法外,还有一个itervalues()方法(python3没有),用itervalues()方法替代values()方法,迭代效果完全一样:

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
print d.itervalues()
# <dictionary-valueiterator object at 0x106adbb50>
for v in d.itervalues():
    print v
# 85
# 95
# 59

那这两个方法有何不同之处呢? 
1. values() 方法实际上把一个 dict 转换成了包含 value 的list。 
2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。 
3. 打印 itervalues() 发现它返回一个 对象,这说明在Python中,for 循环可作用的迭代对象远不止 list,tuple,str,unicode,dict等,任何可迭代对象都可以作用于for循环,而内部如何迭代我们通常并不用关心。 

任务 
给定一个dict:

d = { ‘Adam’: 95, ‘Lisa’: 85, ‘Bart’: 59, ‘Paul’: 74 }

请计算所有同学的平均分。

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }

sum = 0.0
i = 0
for s in d.values():
    sum += s
    i += 1
print (sum/i)


78.25

迭代dict的key和value

在一个for循环中,可以同时迭代key和value。

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

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }
print(d.items())


dict_items([('Adam', 95), ('Lisa', 85), ('Bart', 59), ('Paul', 74)])

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

for key,value in d.items():
    print(key,':',value)

运行结果:

Adam : 95
Lisa : 85
Bart : 59
Paul : 74

任务 
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
i=0
for k,v in d.items():
    sum += v
    i += 1
    print(k,':',v)
print ("anverage",':',sum/i)

运行结果:

Adam : 95
Lisa : 85
Bart : 59
Paul : 74
anverage : 78.25

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值