读书笔记「Python编程:从入门到实践」_4.操作列表
4.1 遍历整个列表
4.1.1 深入地研究循环
4.1.2 在for循环中执行更多的操作
4.1.3 在for循环结束后执行一些操作
例
1 magicians = ['alice', 'david', 'carolina'] 2 for magician in magicians: 3 print(magician.title() + ", that was a great trick!") 4 print("I can't wait to see your next trick, " + magician.title() + ".\n")
Alice, that was a great trick! I can't wait to see your next trick, Alice. David, that was a great trick! I can't wait to see your next trick, David. Carolina, that was a great trick! I can't wait to see your next trick, Carolina.
循环的两个重点,一个是冒号,一个是缩进,另外使用单数和复数式名称,可帮助你判断代码段处理的是单个列表元素还是整个列表。
for xxx in xxxs: print(xxx)
4.2 避免缩进错误
4.2.1 忘记缩进
对于位于for 语句后面且属于循环组成部分的代码行,一定要缩进。如果你忘记缩进,Python会提醒你:IndentationError: expected an indented block
4.2.2 忘记缩进额外的代码行
如果你预期某项操作将针对每个列表元素都执行一次,但它却只执行了一次,请确定是否需要将一行或多行代码缩进。
4.2.3 不必要的缩进
如果你不小心缩进了无需缩进的代码行,Python将指出这一点:IndentationError: unexpected indent
4.2.4 循环后不必要的缩进
如果你不小心缩进了应在循环结束后执行的代码,这些代码将针对每个列表元素重复执行。
4.2.5 遗漏了冒号
for 语句末尾的冒号告诉Python,下一行是循环的第一行。
4.3 创建数值列表
4.3.1 使用函数range()
Python函数range() 让你能够轻松地生成一系列的数字
4.3.2 使用range()创建数字列表
要创建数字列表,可使用函数list() 将range() 的结果直接转换为列表
使用函数range() 时,还可指定步长。打印1~10内的偶数:range(2,11,2)
使用函数range() 几乎能够创建任何需要的数字集
4.3.3 对数字列表执行简单的统计计算
有几个专门用于处理数字列表的Python函数.min(),max(),sum()
4.3.4 列表解析
将for 循环和创建新元素的代码合并成一行,并自动附加新元素。
例
1 # 打印2-10之间的偶数 2 for value in range(1,11,2): 3 print(value) 4 # 以队列的形式打印1-5 5 print(list(range(1,6))) 6 # 打印1-10的平方 7 squares=[] 8 for value in range(1,11): 9 squares.append(value**2) 10 print(squares) 11 #打印1-10平方中的最小值 12 print(min(squares)) 13 #打印1-10平方中的最大值 14 print(max(squares)) 15 #打印1-10平方的和 16 print(sum(squares)) 17 #列表解析 18 lists=[v**2 for v in range(1,10)] 19 print(lists)
结果
1 3 5 7 9 [1, 2, 3, 4, 5] [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] 1 100 385 [1, 4, 9, 16, 25, 36, 49, 64, 81]
4.4 使用列表的一部分
4.4.1 切片
要创建切片,可指定要使用的第一个元素和最后一个元素的索引。 list[strIndx:endIndx]
如果你没有指定第一个索引,Python将自动从列表开头开始,print(players[:4])
如果你没有指定第一个索引,Python将自动到列表结尾结束。print(players[2:]), print(players[-3:])
4.4.2 遍历切片
如果要遍历列表的部分元素,可在for 循环中使用切片 for player in players[:3]:
4.4.3 复制列表
要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:] )。这让Python创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表。
a=b[:] a复制了b a=b a和b指向了同一个列表
例
1 tList=['aaa','bbb','ccc','ddd','eee','fff'] 2 #打印index1到3元素(不含3) 3 print(tList[1:3]) 4 #打印index0到3元素(不含3) 5 print(tList[:3]) 6 #打印index3到最后的元素 7 print(tList[3:]) 8 #打印倒数3个元素 9 print(tList[-3:]) 10 #打印index1到3元素(不含3) 11 for t in tList[1:3]: 12 print(t+"\t") 13 #t2List和tList指向同一个队列 14 t2List=tList 15 tList.pop() 16 t2List.pop() 17 print(tList) 18 print(t2List) 19 #t3List复制了t2List 20 t3List=t2List[:] 21 t2List.pop() 22 print(t2List) 23 print(t3List)
结果
['bbb', 'ccc'] ['aaa', 'bbb', 'ccc'] ['ddd', 'eee', 'fff'] ['ddd', 'eee', 'fff'] bbb ccc ['aaa', 'bbb', 'ccc', 'ddd'] ['aaa', 'bbb', 'ccc', 'ddd'] ['aaa', 'bbb', 'ccc'] ['aaa', 'bbb', 'ccc', 'ddd']
4.5 元组
4.5.1 定义元组
元组看起来犹如列表,但使用圆括号而不是方括号来标识。定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样。
尝试修改元组dimensions 中的一个元素。TypeError: 'tuple' object does not support item assignment
4.5.2 遍历元组中的所有值
像列表一样,也可以使用for 循环来遍历元组中的所有值:
4.5.3 修改元组变量
虽然不能修改元组的元素,但可以给存储元组的变量赋值。因此,如果要修改前述矩形的尺寸,可重新定义整个元组:
例
1 tList=('aaa','bbb','ccc','ddd','eee','fff') 2 for t in tList: 3 print(t) 4 print(tList[1]) 5 tList[1]='xxxx'
结果
aaa bbb ccc ddd eee fff bbb File "C:/Users/changxininjp/PycharmProjects/helloworld/helloworld.py", line 5, in <module> tList[1]='xxxx' TypeError: 'tuple' object does not support item assignment
4.6 设置代码格式
4.6.1 格式设置指南
Python改进提案 (Python Enhancement Proposal,PEP)。PEP 8是最古老的PEP之一
代码被阅读的次数比编写的次数多
4.6.2 缩进
PEP 8建议每级缩进都使用四个空格,这既可提高可读性,又留下了足够的多级缩进空间。
4.6.3 行长
很多Python程序员都建议每行不超过80字符。
4.6.4 空行
要将程序的不同部分分开,可使用空行。你应该使用空行来组织程序文件,但也不能滥用;
4.6.5 其他格式设置指南
https://python.org/dev/peps/pep-0008/