欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python学习笔记(二)

程序员文章站 2022-05-14 09:34:37
function函数: 正如英文单词描述的,函数就是“功能”的意思,把完成一个功能所需要的代码打包起来放在一个函数下可以方便以后程序的重复调用,也能使整体代码条理清晰。正如前面用到的print(), input()之类的内置函数,这里讨论的函数为自定义涵数。 定义函数的格式: def 函数名 (参数 ......

第3章 列表简介

3.1 列表是什么

列表由一系列按特定顺序排列的元素组成。
在Python中,用方括号([])来表示列表,并用逗号来分隔其中的元素。下面是一个简单的列表示例,这个列表包含几种自行车:

bicycles = ['trek', 'cannondale', 'redline', 'specialized'] 
print(bicycles)

如果你让Python将列表打印出来,Python将打印列表的内部表示,包括方括号:

['trek', 'cannondale', 'redline', 'specialized']

3.1.1 访问列表元素

列表是有序集合,因此要访问列表的任何元素,只需将该元素的位置或索引告诉Python即可。
要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内。

bicycles = ['trek', 'cannondale', 'redline', 'specialized'] 
print(bicycles[0])

当你请求获取列表元素时,Python只返回该元素,而不包
括方括号和引号:

trek

可使用方法title()让元素’trek’的格式更整洁

3.1.2 索引从0而不是1开始

在Python中,第一个列表元素的索引为0,而不是1。
Python为访问最后一个列表元素提供了一种特殊语法。通过将索引指定为-1,可让Python返回最后一个列表元素。索引-2返回倒数第二个列表元素,索引-3返回倒数第三个列表元素,以此类推。

3.1.3 使用列表中的各个值

可像使用其他变量一样使用列表中的各个值。

3.2 修改、添加和删除元素

3.2.1 修改列表元素

修改列表元素的语法与访问列表元素的语法类似。要修改列表元素,可指定列表名和要修改的元素的索引,再指定该元素的新值。

motorcycles = ['honda', 'yamaha', 'suzuki'] 
print(motorcycles) 
motorcycles[0] = 'ducati' 
print(motorcycles)
['honda', 'yamaha', 'suzuki'] 
['ducati', 'yamaha', 'suzuki']

你可以修改任何列表元素的值,而不仅仅是第一个元素的值。

3.2.2 在列表中添加元素

1. 在列表末尾添加元素

方法append()将元素’ducati’添加到了列表末尾,而不影响列表中的其他所有元素:

motorcycles = ['honda', 'yamaha', 'suzuki'] 
print(motorcycles) 
motorcycles.append('ducati') 
print(motorcycles)
['honda', 'yamaha', 'suzuki'] 
['honda', 'yamaha', 'suzuki', 'ducati']

方法append()让动态地创建列表易如反掌,例如,你可以先创建一个空列表,再使用一系列的append()语句添加元素。

2. 在列表中插入元素

使用方法insert()可在列表的任何位置添加新元素。

motorcycles = ['honda', 'yamaha', 'suzuki'] 
motorcycles.insert(0, 'ducati') 
print(motorcycles)

在这个示例中,值’ducati’被插入到了列表开头;方法insert()在索引0处添加空间,并将值’ducati’存储到这个地方。这种操作将列表中既有的每个元素都右移一个位置:

['ducati', 'honda', 'yamaha', 'suzuki']

3.2.3 从列表中删除元素

1. 使用del语句删除元素

如果知道要删除的元素在列表中的位置,可使用del语句。

motorcycles = ['honda', 'yamaha', 'suzuki'] 
print(motorcycles) 
del motorcycles[0] 
print(motorcycles)

代码使用del删除了列表motorcycles中的第一个元素——‘honda’:

['honda', 'yamaha', 'suzuki'] 
['yamaha', 'suzuki']

使用del可删除任何位置处的列表元素,条件是知道其索引。

2. 使用方法pop()删除元素

方法pop()可删除列表末尾的元素,并让你能够接着使用它。术语弹出(pop)源自这样的类比:列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素。

 motorcycles = ['honda', 'yamaha', 'suzuki'] 
print(motorcycles) 
popped_motorcycle = motorcycles.pop() 
print(motorcycles) 
print(popped_motorcycle)
['honda', 'yamaha', 'suzuki'] 
['honda', 'yamaha'] 
suzuki

3. 弹出列表中任何位置处的元素

实际上,你可以使用pop()来删除列表中任何位置的元素,只需在括号中指定要删除的元素的索引即可。

motorcycles = ['honda', 'yamaha', 'suzuki'] 
first_owned = motorcycles.pop(0) 
print('The first motorcycle I owned was a ' + first_owned.title() + '.')
The first motorcycle I owned was a Honda.

别忘了,每当你使用pop()时,被弹出的元素就不再在列表中了。

4. 根据值删除元素

不知道要从列表中删除的值所处的位置,只知道要删除的元素的值,可使用方法remove()。

motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati'] 
print(motorcycles) 
motorcycles.remove('ducati') 
print(motorcycles)
['honda', 'yamaha', 'suzuki', 'ducati'] 
['honda', 'yamaha', 'suzuki']

3.3 组织列表

3.3.1 使用方法sort()对列表进行永久性排序

Python方法sort()让你能够较为轻松地对列表进行排序。

cars = ['bmw', 'audi', 'toyota', 'subaru'] 
cars.sort()
print(cars)
['audi', 'bmw', 'subaru', 'toyota']

你还可以按与字母顺序相反的顺序排列列表元素,为此,只需向sort()方法传递参数reverse=True。

cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort(reverse=True) 
print(cars)
['toyota', 'subaru', 'bmw', 'audi']

3.3.2 使用函数sorted()对列表进行临时排序

要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数sorted()。函数sorted()让你能够按特定顺序显示列表元素,同时不影响它们在列表中的原始排列顺序。

cars = ['bmw', 'audi', 'toyota', 'subaru'] 
print("Here is the original list:") 
print(cars) 
print("\nHere is the sorted list:") 
print(sorted(cars)) 
print("\nHere is the original list again:") 
print(cars)
Here is the original list: 
['bmw', 'audi', 'toyota', 'subaru'] 
Here is the sorted list: 
['audi', 'bmw', 'subaru', 'toyota'] 
Here is the original list again: 
['bmw', 'audi', 'toyota', 'subaru']

如果你要按与字母顺序相反的顺序显示列表,也可向函数sorted()传递参数reverse=True。

3.3.3 倒着打印列表

要反转列表元素的排列顺序,可使用方法reverse()。

cars = ['bmw', 'audi', 'toyota', 'subaru'] 
print(cars) 
cars.reverse() 
print(cars)
['bmw', 'audi', 'toyota', 'subaru'] 
['subaru', 'toyota', 'audi', 'bmw']

注意,reverse()不是指按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排列顺序
方法reverse()永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,为此只需对列表再次调用reverse()即可。

3.3.4 确定列表的长度

使用函数len()可快速获悉列表的长度。

>>> cars = ['bmw', 'audi', 'toyota', 'subaru']
>>> len(cars)
4

3.4 使用列表时避免索引错误

3.5 小结

在本章中,你学习了:列表是什么以及如何使用其中的元素;如何定义列表以及如何增删元素;如何对列表进行永久性排序,以及如何为展示列表而进行临时排序;如何确定列表的长度,以及在使用列表时如何避免索引错误。
在第4章,你将学习如何以更高效的方式处理列表元素。通过使用为数不多的几行代码来遍历列表元素,你就能高效地处理它们,即便列表包含数千乃至数百万个元素。

第4章 操作列表

4.1 遍历整个列表

需要对列表中的每个元素都执行相同的操作时,可使用Python中的for循环。
下面使用for循环来打印魔术师名单中的所有名字:

magicians = ['alice', 'david', 'carolina'] 
for magician in magicians: 
print(magician)

首先,我们像第3章那样定义了一个列表。接下来,我们定义了一个for循环;这行代码让Python从列表magicians中取出一个名字,并将其存储在变量magician中。最后,我们让Python打印前面存储到变量magician中的名字。

alice 
david 
carolina

4.1.1 深入的研究循环

Python将首先读取其中的第一行代码:

for magician in magicians:

这行代码让Python获取列表magicians中的第一个值(‘alice’),并将其存储到变量magician中。接下来,Python读取下一行代码:

print(magician)

它让Python打印magician的值——依然是’alice’。鉴于该列表还包含其他值,Python返回到循环的第一行:

for magician in magicians:

Python获取列表中的下一个名字——‘david’,并将其存储到变量magician中,再执行下面这行代码:

print(magician)

Python再次打印变量magician的值——当前为’david’。接下来,Python再次执行整个循环,对列表中的最后一个值——'carolina’进行处理。至此,列表中没有其他的值了,因此Python接着执行程序的下一行代码。在这个示例中,for循环后面没有其他的代码,因此程序就此结束。

4.1.2 在for循环中执行更多的操作

在for循环中,想包含多少行代码都可以。在代码行for magician in magicians后面,每个缩进的代码行都是循环的一部分,且将针对列表中的每个值都执行一次。因此,可对列表中的每个值执行任意次数的操作。

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")
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.

4.1.3 在for循环结束后执行一些操作

在for循环后面,没有缩进的代码都只执行一次,而不会重复执行。

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")
print("Thank you, everyone. That was a great magic show!")
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. 

Thank you, everyone. That was a great magic show!

4.2 避免缩进错误

4.2.1 忘记缩进

4.2.2 忘记缩进额外的代码行

4.2.3 不必要的缩进

4.2.4 循环后不必要的缩进

4.2.5 遗漏了冒号

for语句末尾的冒号告诉Python,下一行是循环的第一行。

4.3 创建数值列表

4.3.1 使用函数range()

Python函数range()让你能够轻松地生成一系列的数字。

for value in range(1,5): 
 print(value)

上述代码好像应该打印数字1~5,但实际上它不会打印数字5:

1 
2 
3 
4

函数range()让Python从你指定的第一个值开始数,并在到达你指定的第二个值后停止,因此输出不包含第二个值(这里为5)。

4.3.2 使用range()创建数字列表

要创建数字列表,可使用函数list()将range()的结果直接转换为列表。

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)

在这个示例中,函数range()从2开始数,然后不断地加2,直到达到或超过终值(11),因此输出如下:

[2, 4, 6, 8, 10]

在Python中,两个星号(**)表示乘方运算。下面的代码演示了如何将前10个整数的平方加入到一个列表中:

squares = []
for value in range(1,11): 
 square = value**2 
 squares.append(square) 
 print(squares)

首先,我们创建了一个空列表;接下来,使用函数range()让Python遍历1~10的值。在循环中,计算当前值的平方,并将结果存储到变量square中。然后,将新计算得
到的平方值附加到列表squares末尾。最后,循环结束后,打印列表squares:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

4.3.3 对数字列表执行简单的统计计算

有几个专门用于处理数字列表的Python函数。例如,你可以轻松地找出数字列表的最大值、最小值和总和:

>>> digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
>>> min(digits)
0 
>>> max(digits)
9 
>>> sum(digits)
45

4.3.4 列表解析

前面介绍的生成列表squares的方式包含三四行代码,而列表解析让你只需编写一行代码就能生成这样的列表。列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素。

squares = [value**2 for value in range(1,11)] 
print(squares)

要使用这种语法,首先指定一个描述性的列表名,如squares;然后,指定一个左方括号,并定义一个表达式,用于生成你要存储到列表中的值。在这个示例中,表达式为value**2,它计算平方值。接下来,编写一个for循环,用于给表达式提供值,再加上右方括号。
请注意,这里的for语句末尾没有冒号。

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

4.4 使用列表的一部分

你还可以处理列表的部分元素——Python称之为切片。

4.4.1 切片

要创建切片,可指定要使用的第一个元素和最后一个元素的索引。与函数range()一样,Python在到达你指定的第二个索引前面的元素后停止。要输出列表中的前三个元素,需要指定索引0~3,这将输出分别为0、1和2的元素。

players = ['charles', 'martina', 'michael', 'florence', 'eli'] 
print(players[0:3])
['charles', 'martina', 'michael']

要输出名单上的最后三名队员,可使用切片players[-3:]:
如果你没有指定第一个索引,Python将自动从列表开头开始:
要让切片终止于列表末尾,也可使用类似的语法。

4.4.2 遍历切片

如果要遍历列表的部分元素,可在for循环中使用切片。

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创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表。

4.5 元组

要创建一系列不可修改的元素,元组可以满足这种需求。Python将不能修改的值称为不可变的,而不可变的列表被称为元组。

4.5.1 定义元组

元组看起来犹如列表,但使用圆括号而不是方括号来标识。定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样。

dimensions = (200, 50) 
print(dimensions[0]) 
print(dimensions[1])
200 
50

修改元组的操作是被禁止的

dimensions = (200, 50) 
dimensions[0] = 250

代码试图修改矩形的尺寸时,Python报告错误

4.5.2 遍历元组中的所有值

像列表一样,也可以使用for循环来遍历元组中的所有值:

dimensions = (200, 50) 
for dimension in dimensions: 
 print(dimension)
200 
50

就像遍历列表时一样,Python返回元组中所有的元素

4.5.3 修改元组变量

虽然不能修改元组的元素,但可以给存储元组的变量赋值。因此,如果要修改前述矩形的尺寸,可重新定义整个元组:

dimensions = (200, 50)
print("Original dimensions:") 
for dimension in dimensions: 
 print(dimension) 
dimensions = (400, 100) 
print("\nModified dimensions:") 
for dimension in dimensions: 
 print(dimension)

给元组变量赋值是合法的

Original dimensions: 
200 
50 

Modified dimensions: 
400 
100

相比于列表,元组是更简单的数据结构。如果需要存储的一组值在程序的整个生命周期内都不变,可使用元组。

4.6 设置代码格式

4.6.1 格式设置指南

4.6.2 缩进

4.6.3 行长

4.6.4 空行

4.6.5 其他格式设置指南

4.7 小结

在本章中,你学习了:如何高效地处理列表中的元素;如何使用for循环遍历列表,Python如何根据缩进来确定程序的结构以及如何避免一些常见的缩进错误;如何创建简单的数字列表,以及可对数字列表执行的一些操作;如何通过切片来使用列表的一部分和复制列表。你还学习了元组(它对不应变化的值提供了一定程度的保护),以及在代码变得越来越复杂时如何设置格式,使其易于阅读。
在第5章中,你将学习如何使用if语句在不同的条件下采取不同的措施;学习如何将一组较复杂的条件测试组合起来,并在满足特定条件时采取相应的措施。你还将学习如何在遍历列表时,通过使用if语句对特定元素采取特定的措施。

本文地址:https://blog.csdn.net/weixin_45943522/article/details/107156608