– No bold guesses, no great discoveries. — Isaac Newton
目录
一、遍历列表
很多时候,我们需要遍历列表中每个元素进行相关操作。我们可以通过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)返回循环的第一行,对于列表下个元素重复执行以上操作,直到最后一个值结束。
1.1 在for循环中执行更多操作
在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
2
2.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循环,用于给表达式提供值。
2.3 数值列表的简单统计
- 函数 min():找出列表最小值
- 函数 max():找出列表最大值
- 函数 sum():对列表所有数值求和
2.4 使用列表的一部分
列表的某部分元素,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 Thompson
2.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']
三、元组
列表可以修改,适合储存变化的数据。当要储存一些不能修改的数据时,则需要使用元组。
元组:元组看起来如同列表,但使用圆括号进行标识,可使用索引进行访问,和访问列表一样。
3.1 定义元组
# 示例
players = ('Stephen Curry', 'Klay Thompson', 'Andrew Wiggins') # 使用圆括号
print(players[0])
print(type(players)) # 查看数据类型
# 运行输出结果
Stephen Curry
<class 'tuple'>
3.2 遍历元组
# 示例
players = ('Stephen Curry', 'Klay Thompson', 'Andrew Wiggins')
for i in players:
print(i)
# 运行输出结果
Stephen Curry
Klay Thompson
Andrew Wiggins
3.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.👏👏👏