5 道练习题·预计 35 分钟·做对一题解锁下一段
这一节内容挺多的,而且不太好理解。新手看完后可能还会一脸懵——这其实很正常。如果你看完是迷糊的,建议先继续学后面的内容,等学完一轮再回来重看几次,那时候就豁然开朗了。
主题:迭代器和生成器
这一节的核心其实就两个词:迭代 和 生成器。理解了它们,你以后处理「一组数据」时就能写出更优雅、更省内存的代码。
比如在 Java 中,我们通过 List 集合的下标来遍历 List 集合中的元素;在 Python 中,给定一个 list 或 tuple,我们可以通过 for 循环来遍历它,这种遍历就叫迭代(iteration)。
可是,Python 的 for 循环抽象程度要 高于 Java 的 for 循环。为什么这么说?因为 Python 的 for 循环不仅可以用在 list 或 tuple 上,还可以作用在 其他可迭代对象 上。
也就是说,只要是可迭代的对象,无论有没有下标,都是可以迭代的。
# 1、for 循环迭代字符串
for char in 'liangdianshui':
print(char, end=' ')
print('\n')
# 2、for 循环迭代 list
list1 = [1, 2, 3, 4, 5]
for num1 in list1:
print(num1, end=' ')
print('\n')
# 3、for 循环也可以迭代 dict(字典)
dict1 = {'name': '两点水', 'age': '23', 'sex': '男'}
for key in dict1: # 迭代 dict 中的 key
print(key, end=' ')
print('\n')
for value in dict1.values(): # 迭代 dict 中的 value
print(value, end=' ')
print('\n')
# 如果 list 里面一个元素有两个变量,也是很容易迭代的
for x, y in [(1, 'a'), (2, 'b'), (3, 'c')]:
print(x, y)输出的结果:
l i a n g d i a n s h u i
1 2 3 4 5
name age sex
两点水 23 男
1 a
2 b
3 c
能放进
for ... in后面的东西,就叫「可迭代对象」。
字符串、list、tuple、dict、set,甚至我们后面要讲的「生成器」,都是可迭代对象。
已经给了你一个 list:
numbers = [1, 2, 3, 4, 5]
请用 for 循环把 numbers 里的所有元素加起来,放进变量 total,然后 print(total)。
输出应该是:
15