如何遍历整个列表?循环让你能够对列表的每个元素都采取一个或一系列相同的措施,从而高效地处理任何长度的列表,包括包含数千乃至数百万个元素的列表。
遍历整个列表
- 需要对列表中的每个元素都执行相同的操作时,可使用 Python 中的
for循环。 - 下面使用
for循环来打印魔术师名单中的所有名字:
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician)
深入研究循环
在 for 循环中执行更多操作
- 在
for循环中,可对每个元素执行任何操作。
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(f"{magician.title()}, that was a great trick!")
- 下面再添加一行代码,告诉每位魔术师,我们期待他的下一次表演:
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 your next trick, {magician.title()}.\n")
在 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 your next trick, {magician.title()}.\n")
print("Thank you, everyone. That was a great magic show!")
避免缩进错误
- 来看一些常见的缩进错误
忘记缩进
- 对于位于
for语句后面且属于循环组成部分的代码行,一定要缩进。
忘记缩进额外的代码行
- 有时候,循环能够运行且不会报告错误,但结果可能出人意料。试图在循环中执行多项任务,却忘记缩进其中的一些代码行时,就会出现这种情况。
不必要的缩进
- 如果你不小心缩进了无须缩进的代码行,Python 将指出这种错误。
- 为避免意外缩进错误,请只缩进需要缩进的代码。
循环后不必要的缩进
- 如果不小心缩进了应在循环结束后执行的代码,这些代码将针对每个列表元素重复执行。
遗漏了冒号
- 如果不小心遗漏了冒号,将导致语法错误,因为 Python 不知道你意欲何为。
创建数值列表
使用函数 range()
- Python 函数
range()能让你轻松生成一系列数。
for value in range(1, 5):
print(value)
- 调用函数
range()时,也可只指定一个参数,这样它将从 0 开始。
使用 range() 创建数字列表
- 要创建数字列表,可使用函数
list()将range()的结果直接转换为列表。如果将range()作为list()的参数,输出将是一个数字列表。 - 将一组数转换为列表,可使用
list():
numbers = list(range(1, 6))
print(numbers)
- 使用函数
range()时,还可指定步长。为此,可给这个函数指定第三个参数,Python 将根据这个步长来生成数。
even_numbers = list(range(2, 11, 2))
print(even_numbers)
- 使用函数
range()几乎能够创建任何需要的数集。 - 下面的代码演示了如何将
前 10 个整数的平方加入一个列表中:
squares = []
for value in range(1, 11):
square = value ** 2
squares.append(square)
print(squares)
- 为了让代码更简洁,可不使用临时变量
square,而直接将每个计算得到的值附加到列表末尾:
squares = []
for value in range(1, 11):
squares.append(value ** 2)
print(squares)
对数字列表执行简单的统计计算
- 有几个专门用于处理数字列表的 Python 函数。例如,你可以轻松地找出数字列表的最大值、最小值和总和:
digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(min(digits))
print(max(digits))
print(sum(digits))
本节使用的数字列表都很短,但这里介绍的知识也适用于包含数百万个数的列表。
列表解析
- 列表解析将
for循环和创建新元素的代码合并成一行,并自动附加新元素。 - 使用列表解析创建平方数列表:
squares = [value ** 2 for value in range(1, 11)]
print(squares)
使用列表的一部分
- 你还可以处理列表的部分元素,Python 称之为切片。
切片
- 要创建切片,可指定要使用的第一个元素和最后一个元素的索引。
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[0:3])
- 你可以生成列表的任意子集。
- 如果没有指定第一个索引,Python 将自动从列表开头开始:
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[:4])
- 要让切片终止于列表末尾,也可使用类似的语法。
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[2:])
- 无论列表多长,这种语法都能够让你输出从特定位置到列表末尾的所有元素。
- 负数索引返回离列表末尾相应距离的元素,因此你可以输出列表末尾的任意切片:
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[-3:])
可在表示切片的方括号内指定第三个值。这个值告诉Python在指定范围内每隔多少元素提取一个。
遍历切片
- 如果要遍历列表的部分元素,可在
for循环中使用切片。
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print("Here are the first three palyers on my team:")
for player in players[:3]:
print(player.title())
复制列表
- 要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:])。
my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods[:]
print('My favorite foods are:')
print(my_foods)
print("\nMy frined's favorite foods are:")
print(friend_foods)
friend_foods = my_foods不是复制,只是关联,会指向同一个内存地址,任意一个列表的改变都会改变另一个列表的值。
元组
- 列表非常适合用于存储在程序运行期间可能变化的数据集。列表是可以修改的。
- 有时候你需要创建一系列不可修改的元素,元组可以满足这种需求。
定义元组
- 元组看起来很像列表,但使用圆括号而非中括号来标识。
dimensions = (200, 50)
print(dimensions[0])
print(dimensions[1])
严格地说,元组是由逗号标识的,圆括号只是让元组看起来更整洁、更清晰。
- 如果你要定义只包含一个元素的元组,必须在这个元素后面加上逗号:
my_t = (3,)
- 创建只包含一个元素的元组通常没有意义,但自动生成的元组有可能只有一个元素。
遍历元组中的所有值
dimensions = (200, 50)
for dimension in dimensions:
print(dimension)
修改元组变量
- 虽然不能修改元组的元素,但可以给存储元组的变量赋值。
dimensions = (200, 50)
print("Original dimensions:")
for dimension in dimensions:
print(dimension)
dimensions = (400, 100)
print("\nModified dimensions:")
for dimension in dimensions:
print(dimension)
- Python 不会引发任何错误,因为给元组变量重新赋值是合法的。
设置代码格式
- PEP8