第四:操作列表
4.1 遍历整个列表
输入:
# 4.1 遍历整个列表
# for循环打印魔术师名单中的所有名字
magicians = ['alice','davide','caroina','duoduo','qianqian']
# 下面一行代码让python获取列表magicians中的第一个值('alice'),并将其存储到变量magician中。 接下来python读取代码print(magician),接着循环到开始
for magicianin magicians:
print(magician)
# 4.1.1 深入的研究循环“让计算机完成重复工作”
cats = ['a','b','c']
dogs = ['d','e','f']
items = ['g','h','i']
for catin cats:
for dogin dogs:
for itemin items:
print(cat)
print(dog)
print(item)
# 4.1.2 在for循环中执行更多的操作
# 在for循环中对每个元素执行任何操作
magicians = ['alice','davide','carolina']
for magicianin magicians:
print(magician.title() +",that was a great trick!")
# 4.1.3 在for循环结束后执行一操作
magicians = ['alice','davide','carolina']
for magicianin magicians:
print(magician.title() +",that was a great trick!")
print("I can't wait to see your next trick, " + magician.title() )
print("Thank you,everyone. Thant was a great magic show!" +"\n")
# PS最后一个print没有缩行
magicians = ['alice','davide','carolina']
for magicianin magicians:
print(magician.title() +",that was a great trick!")
print("I can't wait to see your next trick, " + magician.title() +"\n")
print("Thank you,everyone. Thant was a great magic show!")
PS:使用for循环处理数据是一种对数据集执行整体操作的不错的方式。例如,你可以使用for循环初始化游戏——遍历角色列表,将每个角色显示在屏幕上面。再在循环后面添加一个不缩进的代码块,在屏幕上绘制所有角色后显示一个Play Now按钮。
输出:
# 4.1 遍历整个列表
# for循环打印魔术师名单中的所有名字
alice
davide
caroina
duoduo
qianqian
# 4.1.1 深入的研究循环“让计算机完成重复工作”
a
d
g
a
d
h
a
d
i
a
e
g
a
e
h
a
e
i
a
f
g
a
f
h
a
f
i
b
d
g
b
d
h
b
d
i
b
e
g
b
e
h
b
e
i
......
# 4.1.2 在for循环中执行更多的操作
# 在for循环中对每个元素执行任何操作
Alice,that was a great trick!
Davide,that was a great trick!
Carolina,that was a great trick!
# 4.1.3 在for循环结束后执行一操作
Alice,that was a great trick!
I can't wait to see your next trick, Alice
Thank you,everyone. Thant was a great magic show!
Davide,that was a great trick!
I can't wait to see your next trick, Davide
Thank you,everyone. Thant was a great magic show!
Carolina,that was a great trick!
I can't wait to see your next trick, Carolina
Thank you,everyone. Thant was a great magic show!
# PS最后一个print没有缩行
Alice,that was a great trick!I can't wait to see your next trick, Alice
Davide,that was a great trick!
I can't wait to see your next trick, Davide
Carolina,that was a great trick!
I can't wait to see your next trick, Carolina
Thank you,everyone. Thant was a great magic show!
4.2 避免缩进错误
代码缩进让代码整洁而结构清晰,在python程序中,你将看到缩进成度个不相同的代码块,使我们对代码组织结构进行认识。
输入:
图一# 4.2 避免缩进错误“python根据缩进来判断代码与前一个代码行的关系”
# 4.2.1 忘记缩进
图2# 4.2.2 忘记缩进额外的代码行
# 有时候循环正常运行并不会报错,结果却是去恰恰相反
magicians = ['alice','davide','carolina']
for magicianin magicians:
print(magician.title() +",that was a great trick!")
print("I cant't waite to see your next trick, " + magician.title() +".\n")
PS:这是一个逻辑错误,从语法看这些python代码合法,但是存在逻辑错误,不符合预期。
# 4.2.3 不必要的缩进
不小心缩进了无须缩进的代码回报错,如图一所示。
#4.2.4 循环后不必要的缩进
不小心缩进了应在循环结束后执行的代码,这些代码将针对每个列表元素重复执行。可能会导致语法错误,但大多数会造成逻辑错误。不符合预期。
# 4.2.5 遗漏了冒号
输出:
# 4.2 避免缩进错误“python根据缩进来判断代码与前一个代码行的关系”
# 4.2.1 忘记缩进
# 4.2.2 忘记缩进额外的代码行
Alice,that was a great trick!
Davide,that was a great trick!
Carolina,that was a great trick!
I cant't waite to see your next trick, Carolina.
PS:这是一个逻辑错误,从语法看这些python代码合法,但是存在逻辑错误,不符合预期。
# 4.2.3 不必要的缩进
不小心缩进了无须缩进的代码回报错,如图一所示。
#4.2.4 循环后不必要的缩进
不小心缩进了应在循环结束后执行的代码,这些代码将针对每个列表元素重复执行。可能会导致语法错误,但大多数会造成逻辑错误。不符合预期。
# 4.2.5 遗漏了冒号,如图2所示
4.3 创建数字列表
输入:
# 4.3.1 使用函数range(),生成一系列数字。
# 从1开始到4结束
for valuein range(1,5):
print(value)
# 4.3.2 使用range创建数字列表# 创建数字列表使用函数list()将range()的结果直接转换为列表。如果将range()作为list()参数,输出将为一个数字列表。
number = list(range(1,6))
print(number)
# 使用函数range(),指定步长。例如:打印1-10内偶数# 从2开始数,不断的+2,直到达到或者超过终值(11),因此输出如下:
even_number = list(range(2,11,2))
print(even_number)
# 创建一个包含前10个整数(即1-10)的平方,(**)表示乘方运算。
squars = []for value in range(1,11):
squar = value ** 2
#立即将结果附加到列表squares
squars.append(squar)
print(squars)
# 4.3.3 对数字列表执行简单的统计计算
# 找出数字列表的最大值,最小值和总和
digits = [1,2,3,4,5,6,7,8,9,0]
print(min(digits))
print(max(digits))
print(sum(digits))
# 4.3.4 列表解析[化繁为简]同上1-10的乘方
squares = [value**2 for valuein range(1,11)]
print(squares)
输出:
# 4.3.1 使用函数range(),生成一系列数字。
# 从1开始到4结束
1
2
3
4
# 4.3.2 使用range创建数字列表# 创建数字列表使用函数list()将range()的结果直接转换为列表。如果将range()作为list()参数,输出将为一个数字列表。
[1, 2, 3, 4, 5]
# 使用函数range(),指定步长。例如:打印1-10内偶数# 从2开始数,不断的+2,直到达到或者超过终值(11),因此输出如下:
[2, 4, 6, 8, 10]
# 创建一个包含前10个整数(即1-10)的平方,(**)表示乘方运算。
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# 4.3.3 对数字列表执行简单的统计计算
# 找出数字列表的最大值,最小值和总和
0
9
45
# 4.3.4 列表解析[化繁为简]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
4.4 使用列表的一部分
输入:
错误图展示
# 4.4 使用列表的一部分
# 处理的列表部分元素——称之为pytho中的切片
创建切片,可指定要使用的第一个元素的索引和最后一个元素的索引+1
# 4.4.1 切片
players = ['charles','martina','michael','florence','eli']
print(players[0:3])
# 提取2-4个元素,可将起始索引指定为1 ,并将种植索引指定为4:
players = ['charles','martina','michael','florence','eli']
print(players[1:4])
#由于没有指定起始索引,python从列表开头开始提取。
print(players[:4])
#从列表第4或者2个元素到列表末尾的所有元素。
print(players[4:])
print(players[2:])
#名单最后3名队员
print(players[-3:])
# 4.4.2 遍历切片
players = ['charles', 'martina', 'michael', 'florence', 'eli']
# 遍历列表的部分元素,可在for循环中使用切片。在下面的示例中,遍历前3名队员,并打印他们的名字。
print("Here are the first three players on my team:")
for playerin players[:3]:
print(player.title())
# 4.4.3 复制列表
# 根据既有列表创建全新的列表。要复制整个列表,可创建一个包含的整个列表的切片,方法:同时省略起始索引+终止索引([:])
# 这让python创建一个始于第一个元素终止于最后一个元素的切片,即复制整个列表。
my_foods = ['pizzy','apple','bananas']
friend_foods = my_foods[:]
# 此行代码是行不通的——friend_foods = my_foods,这样我们在两个列表各添加不同食物,2会种食物分别出现都出现在两个列表,并不是我们想要的结果。
my_foods.append('cannoli')
friend_foods.append('ice cream')
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)
输出:
# 4.4.1 切片
['charles', 'martina', 'michael']
# 提取2-4个元素,可将起始索引指定为1 ,并将种植索引指定为4:
['martina', 'michael', 'florence']
['charles', 'martina', 'michael', 'florence']
#从列表第4或者2个元素到列表末尾的所有元素。
['eli']
['michael', 'florence', 'eli']
#名单最后3名队员
['michael', 'florence', 'eli']
# 4.4.2 遍历切片
# 遍历列表的部分元素,可在for循环中使用切片。在下面的示例中,遍历前3名队员,并打印他们的名字。
Here are the first three players on my team:
Charles
Martina
Michael
# 4.4.3 复制列表
# 根据既有列表创建全新的列表。要复制整个列表,可创建一个包含的整个列表的切片,方法:同时省略起始索引+终止索引([:])
# 这让python创建一个始于第一个元素终止于最后一个元素的切片,即复制整个列表。
My favorite foods are:
['pizzy', 'apple', 'bananas', 'cannoli']
My friend's favorite foods are:
['pizzy', 'apple', 'bananas', 'ice cream']
4.5元祖
列表适合用于存储在程序运行期间可能变化的数据集。列表是可以修改的,对处理网站的用户列表或者游戏中的角色列表至关重要。那么,需要创建一系列不可修改的元素,元祖可以满足这种需求。Python将这种不可修改的值称为:不可变的,而不可变的列表被称为:元组。
输入:
# 4.5.1 定义元组
dimension = (200,50)
print(dimension[0])
print(dimension[1])
# 我们首先定义了元组dimension,为此我们使用了圆括号而非方括号。
# 接下来,我们分别打印该元组的各个元素,使用的语法与访问列表元素时使用的语法相同。
# 接下来尝试修改元组dimension中的一个元素,看看结果。
dimension = (200,50)
dimension[0] =250
# 试图修改第一个元素的值,python试图阻止,返回python类型错误信息。
# 修改元组的操作被禁止,因此Python指出不能给元组的元素赋值:
# 由于试图修改元祖的操作被禁止,因此python指出不能给元组的元素赋值
# 4.5.2 遍历元组中的所有值
dimensions = (200,50)
for dimensionin dimensions:
print(dimension)
# 修改元组变量
# 虽然不能修改元组的元素,打呢可以给存储元组的变量赋值。因此如果要修改前述矩形的尺寸,可重新定义整个元组。
dimension = (200,50)
print("Original dimensions:")
for dimensionin dimensions:
print(dimension)
dimensions = (400,100)
print("\nModified dimensions:")
for dimensionin dimensions:
print(dimension)
# 将新元组存储到变量dimensions中,然后打印新尺寸,python不会报任何错误,因为元组变量赋值时合法的。
# 相比列表,元祖是简单的数据结构。如国需要存储的一组值在程序的整个生命周期内都不变,可使用元组。
输出:
# 4.5.1 定义元组
200
50
# 4.5.2 遍历元组中的所有值
200
50
Original dimensions:
200
50
Modified dimensions:
400
100
4.6 设置代码格式
4.6.1 格式设置指南
4.6.2 缩进
4.6.3 行长(每行<=80字符)有些小组将最大行长社设置为99行
4.6.4 空行
将程序不同部分分开,可使用空行。
4.6.5 其他格式设置指南
参考人民邮电出版社《Python 编程从入门到实践》【美】Eric Matthes 著 袁国忠 译
欢迎吐槽!!!