3.3组织列表
3.3.1使用方法sort()
对列表进行永久性排序
将汽车按字母顺序排序:
方法 sort()永久性地修改了列表元素的排列顺序。不可修改。
如果想与字母顺序相反的顺序排列排序,只需向sort()方法传递参数
reverse=True。
cars.sort(reverse=True)
3.3.2使用函数sorted()对列表进行临时排序
要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数sorted()
。
print("\nHere is the sorted list:")
print(sorted(cars))
原始列表元素的排列顺序没有变化;如果你要按与字母顺序相反的顺序显示列表,也可向函数sorted()传递参数reverse=True。
3.3.3倒着打印列表
要反转列表元素的排列顺序,可使用方法reverse()
。
cars = ['bmw', 'audi', 'toyota', 'subaru']
print(cars)
cars.reverse()
print(cars)
注意:reverse()不是指按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排列顺序,方法reverse()永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,为此只需对列表再次调用reverse()即可。
3.3.4确定列表的长度
使用函数len()
可以快速的知道列表的长度
cars = ['bmw', 'audi', 'toyota', 'subaru']
len(cars)
Python计算列表元素数时从1开始,因此确定列表长度时,你应该不会遇到差一错误。
3.4 使用列表时避免索引错误
索引错误意味着Python无法理解你指定的索引。程序发生索引错误时,请尝试将你指定的索引减1,然后再次运行程序,看看结果是否正确。
索引-1总是返回最后的一个列表元素,只有列表为空时,这种访问最后一个元素的方式才会导致错误。
motorcycles = []
print(motorcycles[-1])
发生索引错误却找不到解决办法时,请尝试将列表或其长度打印出来。
第四章 操作列表
学习如何遍历整个列表,循环可以对所有的元素采取一样的措施。。。
4.1 遍历整个列表
需要对列表中的每个元素都执行相同的操作时,可使用Python中的for循环。
使用for循环输出魔术师名单的名字
这行代码让Python从列表magicians中取出一个名字,并将其存储在变量magician中。
4.1.1深入地研究循环
编写for循环时,对于用于存储列表中每个值的临时变量,可指定任何名称。
刚开始使用循环时请牢记,对列表中的每个元素,都将执行循环指定的步骤,而不管列表包含多少个元素。
4.1.2 在for循环中执行更多的操作
print语句中的换行符"\n"在每次迭代结束后都插入一个空行,更整洁。
对于每位魔术师,都打印一条消息,指出他的表演太精彩了
magicians=['alice','david','carolina']
for magician in magicians:
print(magician.title() + ", that was a great trick!")
print("I can't wait to see your next trick, " + magician.title() + ".\n")
4.1.3 在for循环结束后执行一些操作
4.2 避免缩进错误
Python根据缩进来判断代码行与前一个代码行的关系。
4.2.1 忘记缩进
对于位于for语句后面且属于循环组成部分的代码行,一定要缩进。
4.2.2 忘记缩进额外的代码行
4.2.3 不必要的缩进
4.2.4 循环后不必要的缩进
如果你不小心缩进了应在循环结束后执行的代码,逻辑错误
4.2.5 遗漏了冒号
for语句末尾的冒号告诉Python,下一行是循环的第一行。
4.3 创建数值列表
列表非常适合用于存储数字集合。
4.3.1 使用函数range()
range()
能够轻松的生成一系列的数字,
函数range()让Python从你指定的第一个值开始数,并在到达你指定的第二个值后停止,因此输出不包含第二个值(这里为5)。
for value in range(1,5):
print(value)
使用range()时,如果输出不符合预期,请尝试将指定的值加1或减1。
4.3.2 使用range()创建数字列表
可使用函数list()将range()的结果直接转换为列表,将range()作为list()
的参数,输出将为一个数字列表。
numbers = list(range(1,6))
print(numbers)
输出[1,2,3,4,5]
使用函数range()的时候,还可以指定步长。
打印1~10内的偶数:
even_numbers = list(range(2,11,2))
print(even_numbers)
输出:[2,4,6,8]
函数range()从2开始数,不断的加2,直到加到或者超过终值(11)。
使用函数range()几乎能够创建任何需要的数字集,在Python中,两个星号(**)表示乘方运算。
4.3.3 对数字列表执行简单的统计计算
有几个专门用于处理数字列表的Python函数。
> digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
>>> min(digits)
0
>>> max(digits)
9
>>> sum(digits)
4.3.4 列表解析
列表解析可以只编写一行代码生成上面的列表squares的方法,列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素。
squares.py
squares = [value**2 for value in range(1,11)]
print(squares)
要使用这种语法,首先指定一个描述性的列表名,如squares;然后,指定一个左方括号,并定义一个表达式,用于生成你要存储到列表中的值。