4 第四章 操作列表
遍历整个列表
# for 循环 编写for 循环时,选择有意义的列表名称大有帮助
# 如下面的mgicians表示魔术师列表
一般性列表,像下面这样编写for 循环的第一行代码是不错的选择:
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician)
避免缩进错误
Python语言使用格式索引来取代了用来指定代码块的花括号{},这使得代码更加简洁。
在编写代码的时候,要避免出现代码缩进错误。
for循环语句的末尾有冒号 : ,编写代码时需要注意!
创建数值列表
# range(num1, num2)函数: 生成一个取值范围为[num1, num2 - 1]的一个range对象
for value in range(1,6):
print(value)
# 若要将ragne对象转换为列表,可以使用 list(range(num1, num2))
numbers = list(range(1,6))
print(numbers)
# range()函数可以指定步长
even_numbers = list(range(2,11,3)) # 步长是3
print(even_numbers)
# 两个星号(** )表示乘方运算
squares = []
for value in range(1,11):
squares.append(value**2)
print(squares)
编写代码时,首先应该考虑的是,编写清晰易懂且能完成所需功能的代码;
等到审核代码时,再考虑采用更高效的方法。
# 取列表中的 最大值 最小值 总和
max(list) min(list) sum(list)
# 列表解析 for循环的从range(1, 11)中取数值到value中,
# 之后计算value的乘方添加到列表中,直到循环结束
squares = [value**2 for value in range(1,11)]
print(squares)
生成列表时,可以考虑使用**列表解析**
使用列表的一部分
# 切片
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[0:3])
# 输出结果为 ['charles', 'martina', 'michael']
# 如果你没有指定第一个索引,Python将自动从列表开头开始
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[:4])
# 输出结果为 ['charles', 'martina', 'michael', 'florence']
# 若想让切片终止于列表末尾,可以省略末尾索引
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[2:])
# 输出结果为 ['michael', 'florence', 'eli']
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[-3:])
# 输出结果为 最后三个元素
# 输出结果为 ['michael', 'florence', 'eli']
# 遍历切片
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print("Here are the first three players on my team:")
for player in players[:3]: # 在这里for循环使用了切片
print(player.title())
#输出结果为:
# Here are the first three players on my team:
# Charles
# Martina
# Michael
# 复制列表
# 思想方法:可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:]
my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods[:]
元组
# 列表非常适合用于存储在程序运行期间可能发生变化的数据集
# 列表是可以修改的
# 元组非常适合存储一系列不可修改的元素
# Python将不能修改的值称为不可变的
# 元组(tuple): 不可变的列表
# 元组使用 () 包含元素,可通过使用索引来访问元素
# 元组中的元素不可以被修改!
dimensions = (200, 50)
print(dimensions[0]) # 200
print(dimensions[1]) # 50
# dimension的意思:a measurement in space
# for example the height, width or length of sth 维(构成空间的因素)
# 遍历元组中的值
dimensions = (200, 50)
for dimension in dimensions:
print(dimension)
设置代码格式
随着你编写的程序越来越长,有必要花时间让编写的代码尽可能易于阅读;
让代码易于阅读有助于你掌握程序是做什么的,也可以帮助他人理解你编写的代码。
若要提出Python语言修改建议,需要编写Python改进提案 (Python Enhancement Proposal,PEP)。
PEP 8是最古老的PEP之一,它向Python程序员提供了代码格式设置指南。
PEP 8的篇幅很长,但大都与复杂的编码结构相关。
PEP 8建议每级缩进都使用四个空格,这既可提高可读性,又留下了足够的多级缩进空间。
混合使用制表符和空格会让Python解释器感到迷惑。
每款文本编辑器都提供了一种设置,可将输入的制表符转换为指定数量的空格。
你在编写代码时应该使用制表符键,但一定要对编辑器进行设置,使其在文档中插入空格而不是制表符。
在程序中混合使用制表符和空格可能导致极难解决的问题。
建议程序每行不超过79字符
要将程序的不同部分分开,可使用空行;
你应该使用空行来组织程序文件,但也不能滥用;
例如,如果你有5行创建列表的代码,还有3行处理该列表的代码,那么用一个空行将这两部分隔开是合适的,然而,你不应使用三四个空行将它们隔开;
空行不会影响代码的运行,但会影响代码的可读性;
Python解释器根据水平缩进情况来解读代码,但不关心垂直间距。
小结
如何高效地处理列表中的元素(列表解析等);
如何使用for 循环遍历列表;
如何创建简单的数字列表,以及可对数字列表执行的一些操作;
如何通过切片来使用列表的一部分和复制列表;
学习了元组(它对不应变化的值提供了一定程度的保护);
在代码变得越来越复杂时如何设置格式,使其易于阅读。