Python基础入门(十六)-迭代

1. 什么是迭代

迭代(Iteration)是一种操作,通过循环依次访问集合中的每个元素。在 Python 中,最常用的迭代方式是 for 循环。
例如,给定一个列表(list)或元组(tuple),我们可以通过 for 循环遍历这些数据结构中的每个元素。实际上,Python 的 for 循环不仅可以作用于列表和元组,还可以作用于任何可迭代对象(如字符串、集合等)。

【注意】
在 Python 中,可迭代对象包括以下几种:

  1. 有序集合:列表(list)、元组(tuple)、字符串(str)。

  2. 无序集合:集合(set)。

  3. 键值对集合:字典(dict)。

练习


请用 for 循环迭代数列 1 到 100,并打印出 7 的倍数。

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

2. 索引迭代

在 Python 中,for 循环默认迭代的是元素本身,而非元素的索引。如果需要同时获取索引和元素,可以使用 enumerate() 函数。

2.1 enumerate() 函数

enumerate() 函数可以将一个可迭代对象(如列表)转换为一个包含索引和元素的元组序列。例如:

L = ['Adam', 'Lisa', 'Bart', 'Paul']
for index, name in enumerate(L):
    print(index, '-', name)

enumerate() 函数将列表 L 转换为类似以下的元组序列:

[(0, 'Adam'), (1, 'Lisa'), (2, 'Bart'), (3, 'Paul')]

练习
在迭代 ['Adam', 'Lisa', 'Bart', 'Paul'] 时,如果我们想打印出名次 - 名字(名次从 1 开始):

L = ['Adam', 'Lisa', 'Bart', 'Paul']
for index, name in enumerate(L, start=1):
    print(index, '-', name)

或者使用 zip() 函数和 range() 函数:

L = ['Adam', 'Lisa', 'Bart', 'Paul']
for index, name in zip(range(1, len(L) + 1), L):
    print(index, '-', name)

3. 迭代字典的值

字典(dict)本身是一个可迭代对象,通过 for 循环直接迭代字典时,每次获取的是字典的键(key)。如果需要迭代字典的值(value),可以使用以下方法:

3.1 values() 方法

Python 3 中,values() 方法返回一个动态视图(view),而不是一个完整的列表。这意味着它不会一次性生成所有值,而是在迭代时逐个返回值,从而节省内存。

语法

dict.values()

示例 1:迭代字典的值

# 定义一个字典
d = {'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74}

# 使用 values() 方法迭代字典的值
for value in d.values():
    print(value)

输出:

95
85
59
74
【注】 在 Python 3 中,itervalues() 方法已经被移除

4. 迭代字典的键和值

在一个 for 循环中,可以同时迭代字典的键(key)和值(value)。字典的 items() 方法可以将字典转换为一个包含 (key, value) 元组的列表,从而实现同时迭代键和值:

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

类似地,iteritems() 方法(Python 2)在迭代过程中逐个返回 (key, value) 元组,节省内存。在 Python 3 中,items() 方法的行为类似于 iteritems()

练习
请根据字典:

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

打印出每个同学的分数,并计算平均分。

scores = list(d.values())
average = sum(scores) / len(scores)
print("Average:", average)
for key, value in d.items():
    print(key, ":", value)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

释梦燃

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值