一、遍历整个列表
如果需要对列表中的每个元素都执行相同的操作,可使用Python中的for循环。下面使用for循环打印一个名单中的所有名字:
python
peoples=['Alice','David','Bob','Cindy']
for people in peoples:
print(people)
输出就是列表中所有的名字:

1、深入研究循环
循环很重要,因为它是让计算机自动完成重复工作的常见方式之一。刚开始使用循环时请牢记,不管列表包含多少个元素,每个元素都将被执行循环指定的步骤。如果列表包含100万个元素,Python就将重复执行指定的步骤100万次,而且通常速度非常快。
在编写for循环时,可以给将依次与列表中的每个值相关联的临时变量指定任意名称。然而,选择描述单个列表元素的有意义的名称大有裨益。使用单数和复数形式的名称,可帮助你判断代码段处理的是单个列表元素还是整个列表。
python
for cat in cats:
for dog in dogs:
for items in items:
2、在for循环中执行更多的操作
在for循环中,想包含多少行代码都可以。
python
peoples=['Alice','David','Bob','Cindy']
for people in peoples:
print("Hello,",f"{people}")
print("Nice to meet you")
3、在for循环结束后执行一些操作
在for循环后面,没有缩进的代码都只执行一次,不会重复执行。
python
peoples=['Alice','David','Bob','Cindy']
for people in peoples:
print("Hello,",f"{people}")
print("Thank you attend this meeting")
输出结果如下:

使用for循环处理数据,是一种对数据集执行整体操作的不错方式。
二、避免缩进错误
Python根据缩进来判断代码行与程序其他部分的关系。Python通过缩进让代码更易读。当你开始编写必须正确缩进的代码时,需要注意一些常见的缩进错误。
1、忘记缩进
位于for语句后面且属于循环组成部分的代码行,一定要缩进。如果忘记缩进,Python会提醒你。
python
peoples=['Alice','David','Bob','Cindy']
for people in peoples:
print(people)

Python如果没有找到期望缩进的代码块,会让你知道哪行代码出了问题。
2、忘记缩进额外的代码行
例如,如果忘记缩进循环中的第二行代码,就会出现这种情况:
python
peoples=['Alice','David','Bob','Cindy']
for people in peoples:
print(people)
print("明天上午十点开会!")

只有最后一个人收到了开会消息,其他人都没有收到,这是一个逻辑错误。从语法上看,这些代码是合法的,但由于存在逻辑错误,结果并不符合预期。
3、不必要的缩进
如果你不小心缩进了无需缩进的代码行,Python会指出这一点:
python
message="Hello World"
print(message)
Python会提示IndentationError: unexpected indent错误。
4、循环后不必要的缩进
如果你不小心缩进了应在循环结束后执行的代码,这些代码将针对每个列表元素重复执行。在一些情况下,这可能导致Python报告语法错误,但通常只会导致逻辑错误。
三、创建数值列表
列表非常适合用于存储数值集合,而Python提供了很多工具,可帮助你高效地处理数值列表。
1、使用range()函数
Python函数range()让你能够轻松地生成一系列的数。例如,可以像下面这样使用range()函数打印一系列的数:
python
for value in range(1,4):
print(value)
output
1
2
3
4
range()函数让Python从指定的第一个值开始数,并在到达指定的第二个值时停止,因此输出不包含第二个值(这里为5)。在调用range()函数时,也可只指定一个参数,这样它将从0开始,例如,range(6)返回0-5(含)。
2、使用range()函数创建数值列表
要创建数值列表,可使用list()函数将range()的结果直接转换为列表。如果将range()作为list()的参数,输出将是一个数值列表。
python
numbers=list(range(1,6))
print(numbers)
output
[1, 2, 3, 4, 5]
在使用range()函数时,还可指定步长。
python
numbers=list(range(1,6,2))
print(numbers)
output
[1, 3, 5]
3、对数值列表执行简单的统计计算
有几个Python函数可帮助你处理数值列表。例如,你可以轻松地找出数值列表中的最大值、最小值和总和。
python
numbers=[1,2,3,4,5]
print(max(numbers))
print(min(numbers))
print(sum(numbers))
output
5
1
15
4、列表推导式
列表推导式(list comprehension)将for循环和创建新元素的代码合并成一行,并自动追加新元素。要使用这种语法,首先指定一个描述性的列表名,然后指定一个左方括号,并定义一个表达式,用于生成要存储到列表中的值。接下来,编写一个for循环,用于给表达式提供值,再加上右方括号。
python
squares=[value**2 for value in range(1,11)]
print(squares)
output
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
四、使用列表的一部分
处理列表的部分元素,在Python中称为切片(slice)。
1、切片
要创建切片,可指定要使用的第一个元素和最后一个元素的索引。与range()函数一样,Python在到达指定的第二个索引之前的元素停止。
python
animals=['cat','dog','rabbit','horse','monkey']
print(animals[0:3])
output
['cat', 'dog', 'rabbit']
如果没有指定第一个索引,Python将自动从列表开头开始。
python
animals=['cat','dog','rabbit','horse','monkey']
print(animals[:4])
output
['cat', 'dog', 'rabbit', 'horse']
要让切片终止于列表末尾,也可使用类似语法。
python
animals=['cat','dog','rabbit','horse','monkey']
print(animals[2:])
output
['rabbit', 'horse', 'monkey']
无论列表多长,这种语法都能够让你输出从特定位置到列表末尾的所有元素。负数索引返回与列表末尾有相应距离的元素,因此可以输出列表末尾的任意切片。
python
animals=['cat','dog','rabbit','horse','monkey']
print(animals[-3:])
output
['rabbit', 'horse', 'monkey']
可在表示切片的方括号内指定第三个值。这个值告诉Python在指定范围内每隔多少元素提取一个。
2、遍历切片
如果要遍历列表中的部分元素,可在for循环中使用切片。在很多情况下,切片是很有用的。例如,在处理数据时,可以使用切片来进行批量处理;在编写Web应用程序时,可以使用切片来分页显示信息,并在每页上显示数量合适的信息。
python
animals=['cat','dog','rabbit','horse','monkey']
for animal in animals[:3]:
print(animal)
output
cat
dog
rabbit
3、复制列表
要复制列表,可以创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:])。这让Python创建一个起始于第一个元素、终止于最后一个元素的切片,即复制整个列表。
python
my_foods=['pizza','falafel','carrot cake']
friend_foods=my_foods[:]
print("my_foods:",my_foods)
print("friend_foods:",friend_foods)
output
my_foods: ['pizza', 'falafel', 'carrot cake']
friend_foods: ['pizza', 'falafel', 'carrot cake']
五、元组
列表非常适合用于存储在程序运行期间可能变化的数据集。列表是可以修改的,这对于网站的用户列表或游戏中的角色列表至关重要。然而,你有时候需要创建一系列不可修改的元素,元组可满足这种需求。Python将不能修改的值称为不可变的 ,而不可变的列表称为元组(tuple)。
1、定义元组
元组使用圆括号而不是方括号来标识。定义元组后,就可使用索引来访问其元素,就像访问列表元素一样。
python
dimensions=(200,50)
print(dimensions[0])
print(dimensions[1])
output
200
50
下面来尝试修改第一个元素的值,导致Python返回类型错误的信息:

元组是由逗号标识的,如果你要定义只包含一个元素的元组,必须在这个元素后面加上逗号:
python
my_t=(3,)
2、遍历元组中的所有值
像列表一样,也可以使用for循环来遍历元组中的所有值:
python
dimensions=(200,50)
for dimension in dimensions:
print(dimension)
output
200
50
3、修改元组变量
虽然不能修改元组的元素,但可以给表示元组的变量赋值。
python
dimensions=(200,50)
for dimension in dimensions:
print("修改前:",dimension)
dimensions=(400,100)
for dimension in dimensions:
print("修改后:",dimension)
output
修改前: 200
修改前: 50
修改后: 400
修改后: 100
相比于列表,元组是更简单的数据结构。如果需要存储一组在程序的整个生命周期内都不变的值,就可以使用元组。