概述
4.1 遍历整个列表
for 循环是个很好用的方法
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician)
>>>alice
>>>david
>>>carolina
刚开始使用循环时请牢记,对列表中的每个元素,都将执行循环指定的步骤,而不管列表包含多少个元素。如果列表包含一百万个元素,Python就重复执行指定的步骤一百万次,且通常速度非常快。
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician.title() + ", that was a great trick!")
>>>Alice, that was a great trick!
>>>David, that was a great trick!
>>>Carolina, that was a great trick!
在for循环中,想包含多少行代码都可以。在代码行for magician in magicians后面,每个缩进的代码行都是循环的一部分,且将针对列表中的每个值都执行一次。因此,可对列表中的每个值执行任意次数的操作。
试一试
4.3 创建数值列表
列表非常适合用于存储数字集合,而Python提供了很多工具,可帮助你高效地处理数字列表。明白如何有效地使用这些工具后,即便列表包含数百万个元素,你编写的代码也能运行得很好。
4.3.1 使用函数range()
numbers = list(range(1,6))
print(numbers)
>>>[1, 2, 3, 4, 5]
还可以指定步长
even_numbers = list(range(2,11,2))
print(even_numbers)
>>>[2, 4, 6, 8, 10]
在这个示例中,函数range()从2开始数,然后不断地加2,直到达到或超过终值(11)
使用函数range()几乎能够创建任何需要的数字集,例如,如何创建一个列表,其中包含前10个整数(即1~10)的平方呢?在Python中,两个星号(**)表示乘方运算。下面的代码演示了如何将前10个整数的平方加入到一个列表中:
squares = []
for value in range(1,11):
square = value**2
squares.append(square)
print(squares)
#不使用临时变量,直接附加到列表末尾也可以
squares = []
for value in range(1,11):
squares.append(value**2)
print(squares)
>>>[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
你首先应该考虑的是,编写清晰易懂且能完成所需功能的代码;等到审核代码时,再考虑采用更高效的方法。
4.3.2 对列表数字执行简单的统计计算
4.3.3 列表解析
前面介绍的生成列表squares的方式包含三四行代码,而列表解析让你只需编写一行代码就能生成这样的列表。列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素。面向初学者的书籍并非都会介绍列表解析,这里之所以介绍列表解析,是因为等你开始阅读他人编写的代码时,很可能会遇到它们。
squares = [value**2 for value in range(1,11)]
print(squares)
>>>[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
试一试
4.4 使用列表的一部分
4.4.1 切片
players = ['charles', 'martina', 'michael', 'florence', 'eli']
#第一个到第三个
print(players[0:3])
#第二个到第四个
print(players[1:4])
#自动从头开始
print(players[:4])
#从第三个到末尾
print(players[2:])
#最后三个
print(players[-3:])
>>>['charles', 'martina', 'michael']
>>>['martina', 'michael', 'florence']
>>>['charles', 'martina', 'michael', 'florence']
>>>['michael', 'florence', 'eli']
>>>['michael', 'florence', 'eli']
4.4.2 遍历切片
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print("Here are the first three players on my team:")
for player in players[:3]:
print(player.title())
>>>Here are the first three players on my team:
>>>Charles
>>>Martina
>>>Michael
4.4.3 复制列表
要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:])。这让Python创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表。
my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods[:]
print("My favorite foods are:")
print(my_foods)
print("nMy friend's favorite foods are:")
print(friend_foods)
>>>My favorite foods are:
>>>['pizza', 'falafel', 'carrot cake']
>>>My friend's favorite foods are:
>>>['pizza', 'falafel', 'carrot cake']
这样的好处在于现存的两个列表相互独立,改变某一个列表中的元素,不会影响其他列表。
这和friend_foods = my_foods不同,此时这两个变量指向的是同一个列表。
试一试
4.5 元组
列表非常==适合用于存储在程序运行期间可能变化的数据集。==列表是可以修改的,这对处理网站的用户列表或游戏中的角色列表至关重要。然而,有时候你需要创建一系列不可修改的元素,元组可以满足这种需求。Python将不能修改的值称为不可变的,而不可变的列表被称为元组。
元组看起来犹如列表,但使用圆括号而不是方括号来标识。定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样。
dimensions = (200, 50)
print(dimensions[0])
print(dimensions[1])
>>>200
>>>50
元组同样可以进行遍历,但不能修改其中元素。
试一试
4.6 代码相关规范
-
缩进
PEP 8建议每级缩进都使用四个空格,这既可提高可读性,又留下了足够的多级缩进空间。
在字处理文档中,大家常常使用制表符而不是空格来缩进。对于字处理文档来说,这样做的效果很好,但混合使用制表符和空格会让Python解释器感到迷惑。每款文本编辑器都提供了一种设置,可将输入的制表符转换为指定数量的空格。你在编写代码时应该使用制表符键,但一定要对编辑器进行设置,使其在文档中插入空格而不是制表符。
在程序中混合使用制表符和空格可能导致极难解决的问题。如果你混合使用了制表符和空格,可将文件中所有的制表符转换为空格,大多数编辑器都提供了这样的功能。 -
行长
很多Python程序员都建议每行不超过80字符。最初制定这样的指南时,在大多数计算机中,终端窗口每行只能容纳79字符;当前,计算机屏幕每行可容纳的字符数多得多,为何还要使用79字符的标准行长呢?这里有别的原因。专业程序员通常会在同一个屏幕上打开多个文件,使用标准行长可以让他们在屏幕上并排打开两三个文件时能同时看到各个文件的完整行。PEP 8还建议注释的行长都不超过72字符,因为有些工具为大型项目自动生成文档时,会在每行注释开头添加格式化字符。
PEP 8中有关行长的指南并非不可逾越的红线,有些小组将最大行长设置为99字符。在学习期间,你不用过多地考虑代码的行长,但别忘了,协作编写程序时,大家几乎都遵守PEP 8指南。在大多数编辑器中,都可设置一个视觉标志——通常是一条竖线,让你知道不能越过的界线在什么地方。 -
空行
要将程序的不同部分分开,可使用空行。你应该使用空行来组织程序文件,但也不能滥用;只要按本书的示例展示的那样做,就能掌握其中的平衡。例如,如果你有5行创建列表的代码,还有3行处理该列表的代码,那么用一个空行将这两部分隔开是合适的。然而,你不应使用三四个空行将它们隔开。
空行不会影响代码的运行,但会影响代码的可读性。Python解释器根据水平缩进情况来解读代码,但不关心垂直间距。
最后
以上就是顺心紫菜为你收集整理的第4章 操作列表4.1 遍历整个列表4.3 创建数值列表4.4 使用列表的一部分4.5 元组4.6 代码相关规范的全部内容,希望文章能够帮你解决第4章 操作列表4.1 遍历整个列表4.3 创建数值列表4.4 使用列表的一部分4.5 元组4.6 代码相关规范所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复