目录
4.1 遍历整个列表
我们经常需要遍历列表的所有元素,对每个元素执行相同的操作
为此我们可以编写循环代码, 来对列表中的每个元素执行相同的操作:
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician)
在第二行中,我们使用了 for 关键字定义了一个循环体
它能让 Python 从列表 magicians 中依次取出一个个名字,并将取出的名字与变量 magician 相关联
在第三行中,我们打出了四个空格作为缩进(indentation)
然后,让 Python 打印前面赋给变量 magician 的名字
4.1.1 深入研究循环
仔细看看这段循环代码, magician 是一个临时变量
for magician in magicians:
print(magician)
临时变量的名称可以任意指定:
for a in cats:
for b in dogs:
for c in list_of_items:
含义不清晰?
for cat in cats:
for dog in dogs:
for item in list_of_items:
名称的含义清晰了很多
4.1.2 在 for 循环中执行更多的操作
在 for 循环中,可以对每个元素执行任意操作 只要保持缩进,我们可以在 for 循环中放入多行语句 我们来看一看些许复杂的例子:
magicians = ['alice', 'david', 'carolina']for magician in magicians:
print(f"{magician.title()}, that was a great trick!")
print(f"I can't wait to see more, {magician.title()}.\n")
在 for 循环中,可以对每个元素执行任意操作 只要保持缩进,我们可以在 for 循环中放入多行语句
4.1.3 在 for 循环结束后执行一些操作
我们可以在 for 循环结束后,提供一个总结性输出,或接着执行程序必须完成的其他任务 例如我们可以打印一条向全体魔术师致谢的消息,以感谢他们的精彩表演:
magicians = ['alice', 'david', 'carolina']for magician in magicians:
print(f"{magician.title()}, that was a great trick!")
print(f"I can't wait to see more, {magician.title()}.\n")
print("Thank you, everyone. That was a great magic show!")
4.2 避免缩进错误
没有正确的缩进
magicians = ['alice', 'david']for magician in magicians:
print(magician)
缩进错误(IndentationError)
忘记缩进额外的代码行
magicians = ['alice', 'david', 'carolina']for magician in magicians:
print(f"{magician.title()}, that was a great trick!")
print(f"I can't wait to see more, {magician.title()}.\n")
逻辑错误
循环后不必要的缩进
magicians = ['alice', 'david', 'carolina']for magician in magicians:
print(f"{magician.title()}, ...!")
print(f"I can't wait to see more, {magician.title()}.\n")
print("Thank you everyone, that was a great magic show!")
逻辑错误
循环的末尾漏掉了冒号
magicians = ['alice', 'david', 'carolina']for magician in magicians
print(magician)
语法错误(SyntaxError)
4.3 创建数值列表
range([start,] end [,step]):生成可迭代的数值列表的表示。
for value in range(1, 5):
print(value)
代码只打印了数 1 ~ 4, 这是编程语言中常见的差一行为,输出在指定的第二个值处停止了。 要打印数 1 ~ 5,需要使用 range(1, 6) 第一个参数 start 是可选的: 例如 range(6) 将会打印数 0 ~ 5
我们可以创建一个空列表, 然后将计算后的数添加到其中。 为了代码的清晰简单, 中间结果未用临时变量存储
squares = []
for value in range(1, 11):
squares.append(value ** 2)
print(squares)
4.3 列表推导式(list comprehension)
类似于之前使用循环添加元素的代码, 我们还可以利用列表推导式直接生成列表:
squares = [value**2 for value in range(1, 11)]
print(squares)
运行的结果是相同的:
暂时不理解没关系, 不妨多多对比练习
4.3 数值列表的简单统计计算
max(lst):取数值列表中的最大值。
min(lst):取数值列表中的最小值。
sum(lst):对数值列表执行求和计算。
digits = [1, 2, 3, 4, 5]
print(min(digits))
print(max(digits))
print(sum(digits))
试试创建更多元素再执行统计