– No bold guesses, no great discoveries. — Isaac Newton
目录- 一、遍历列表
- 1.1 在for循环中执行更多操作
- 1.2 for循环结束后的操作
- 1.3 避免循环缩进错误
- 二、创建数值列表
- 2.1 函数range()
- 2.1.1 函数range()创建简单数字列表
- 2.1.2 函数range()创建复杂数字列表
- 2.2 列表解析
- 2.3 数值列表的简单统计
- 2.4 使用列表的一部分
- 2.4.1 切片
- 2.4.2 遍历切片
- 2.4.3 复制列表
- 三、元组
- 3.1 定义元组
- 3.2 遍历元组
- 3.3 修改元组变量
- 四、完结
很多时候,我们需要遍历列表中每个元素进行相关操作。我们可以通过for循环来实现列表遍历。
# 示例 players = ['Stephen Curry', 'Klay Thompson', 'Andrew Wiggins'] forname in players: print(name) # 注意缩进 # 运行输出结果 Stephen Curry Klay Thompson Andrew Wiggins
这个示例的执行流程分为4个步骤:
1)python从列表players中读取一个名字;2)将其储存在变量name(临时变量)中;3)通过函数 print() 打印存储在变量name的名字;4)返回循环的第一行,对于列表下个元素重复执行以上操作,直到最后一个值结束。
在for所在的代码行下面,每个缩进的代码行都是循环的一部分。
# 示例 players = ['curry', 'thompson', 'wiggins'] forname in players: name = name.title() print('%s is a good basketball player.'%(name)) # 运行输出结果 Curry is a good basketball player. Thompson is a good basketball player. Wiggins is a good basketball player.1.2 for循环结束后的操作
for循环后面,没有缩进的代码行只会执行一次。
# 示例 players = ['Stephen Curry', 'Klay Thompson'] forname in players: name.title() print('%s is a good basketball player'%(name)) # 循环结束 print('You are the champions!') # 只执行一次 # 运行输出结果 Stephen Curry is a good basketball player Klay Thompson is a good basketball player You are the champions!1.3 避免循环缩进错误
- 忘记缩进:位于for语句且所有属于循环部分的代码行,一定要缩进。否则报如下错误:IndentationError: expected an indented block.
- 忘记缩进额外的代码行:可能出现逻辑错误
# 示例 players = ['Stephen Curry', 'Klay Thompson'] for name in players: name.title() print('%s is a good basketball player'%(name)) # 运行输出结果 Klay Thompson is a good basketball player
其中print()所在代码也属于循环语句的一部分,也应该缩进。虽然代码是合法的,但是存在逻辑错误,不符合预期。
- 缩进循环结束的语句:可能会出现逻辑错误,不符合预期结果。
- 遗忘冒号:for循环语句末尾冒号目的是告诉python下一行是循环的第一行。
我们常常需要使用一些数值,而列表很适合存储数值集合。
2.1 函数range()# 示例 fori in range(3): print(i) # 打印一系列数值 # 运行输出结果 0 1 22.1.1 函数range()创建简单数字列表
创建数字列表时,须使用**函数list()**将range() 结果转换成列表。
# 示例 # range只包含一个stop参数,默认从0开始,stop-1结束 numbers = list(range(7)) # range(stop) print(numbers) #range包含两个参数:start, stop;从start开始,stop-1结束 numbers = list(range(2, 7)) # range(start, stop) print(numbers) #range包含三个参数:start, stop,step;从start开始,步长为step,不超过stop-1。 numbers = list(range(3,7,2)) # range(start, stop[, step]) print(numbers) # 运行输出结果 [0, 1, 2, 3, 4, 5, 6] [2, 3, 4, 5, 6] [3, 5]2.1.2 函数range()创建复杂数字列表
例如创建一组简单的平方数:
# 示例 squares = [] # 创建空列表 for i inrange(10): squares.append(i**2) # 通过**计算数值平方,然后通过append添加如列表中 print(squares) # 运行输出结果 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]2.2 列表解析
前面介绍的生成squares列表的方法包含的几行,而列表解析只需编写一行代码。
# 示例 squares = [i**2 for i in range(10)] print(squares) # squares = [i ** 2 for i in range(10) if i % 2==0] #print(squares) # 运行输出结果 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] # [0, 4, 16, 36, 64]
语法步骤:
1)指定一个列表名如 squares;2)在一个中括号中定义一个表达式如 i**2,用于生成列表中的值; 3)然后编写一个for循环,用于给表达式提供值。
- 函数 min():找出列表最小值
- 函数 max():找出列表最大值
- 函数 sum():对列表所有数值求和
列表的某部分元素,python称之为切片。
2.4.1 切片要创建切片,需指定 start 和 stop 的索引,与函数range()一样, 取到 stop-1。
# 示例 players = ['Stephen Curry', 'Klay Thompson', 'Andrew Wiggins','Draymond Green'] print(players[0:2]) # 取0,1索引对应的元素 print(players[:2]) # 与上面相同,默认从0索引开始 print(players[2:]) # 从索引2直到最后 print(players[2:3]) # 取索引2,等价于players[2] print(players[:-2]) # 取倒数第二个前面所有元素 print(players[-3:]) # 取倒数第三个后面所有元素 print(players[:]) # 取所有元素,等价于players print(players[:-1:2]) # 其中:2表示切片的步长为2 # 运行输出结果 ['Stephen Curry', 'Klay Thompson'] ['Stephen Curry', 'Klay Thompson'] ['Andrew Wiggins', 'Draymond Green'] ['Andrew Wiggins'] ['Stephen Curry', 'Klay Thompson'] ['Klay Thompson', 'Andrew Wiggins', 'Draymond Green'] ['Stephen Curry', 'Klay Thompson', 'Andrew Wiggins', 'Draymond Green'] ['Stephen Curry', 'Andrew Wiggins']2.4.2 遍历切片
可使用for循环遍历切片。
# 示例 players = ['Stephen Curry', 'Klay Thompson', 'Andrew Wiggins','Draymond Green'] for name in players[:2]: print(name) # 运行输出结果 Stephen Curry Klay Thompson2.4.3 复制列表
通过切片 [:] 提取原列表的所有元素,从而创建这个列表的副本。
# 示例 players = ['Stephen Curry', 'Klay Thompson', 'Andrew Wiggins'] new_players = players[:] # 注意不能简单的使用 new_players = players players.append('Draymond Green') new_players.append('Kevon Looney') print(players) print(new_players) # 运行输出结果 ['Stephen Curry', 'Klay Thompson', 'Andrew Wiggins', 'Draymond Green'] ['Stephen Curry', 'Klay Thompson', 'Andrew Wiggins', 'Kevon Looney']
列表错误的复制方式: new_players = players。这里的 = 不是将 players 的副本储存到new_players, 而是将新变量new_players关联到变量players对应列表,因此 = 使得两个变量都指向同一个列表。
# 示例 players = ['Stephen Curry', 'Klay Thompson', 'Andrew Wiggins'] new_players = players players.append('Draymond Green') new_players.append('Kevon Looney') print(players) print(new_players) # 运行输出结果 ['Stephen Curry', 'Klay Thompson', 'Andrew Wiggins', 'Draymond Green', 'Kevon Looney'] ['Stephen Curry', 'Klay Thompson', 'Andrew Wiggins', 'Draymond Green', 'Kevon Looney']三、元组
列表可以修改,适合储存变化的数据。当要储存一些不能修改的数据时,则需要使用元组。
元组:元组看起来如同列表,但使用圆括号进行标识,可使用索引进行访问,和访问列表一样。
# 示例 players = ('Stephen Curry', 'Klay Thompson', 'Andrew Wiggins') # 使用圆括号 print(players[0]) print(type(players)) # 查看数据类型 # 运行输出结果 Stephen Curry3.2 遍历元组
# 示例 players = ('Stephen Curry', 'Klay Thompson', 'Andrew Wiggins') for i in players: print(i) # 运行输出结果 Stephen Curry Klay Thompson Andrew Wiggins3.3 修改元组变量
虽然不能修改元组中的元素,但可以给储存元组的变量赋值
# 示例 players = ('Stephen Curry', 'Klay Thompson', 'Andrew Wiggins') print(players) # 变量重新赋值 players = ('Stephen Curry', 'Klay Thompson') print(players) # 运行输出结果 ('Stephen Curry', 'Klay Thompson', 'Andrew Wiggins') ('Stephen Curry', 'Klay Thompson')四、完结
撒花
If you feel happy, clap your hands.