第七节 认识列表2

3.3 组织列表

在你创建的列表中,元素的排列顺序常常是无法预测的,因为你并非总能控制用户提供数据的顺序。这虽然在大多数情况下是不可避免的,但你经常需要以特定的顺序呈现信息。有时候,你希望保留列表元素最初的排列顺序,而有时候又需要调整排列顺序。Python提供了很多组织列表的方式,可根据具体情况选用。

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

Python方法sort()让你能够较为轻松地对列表进行排序。假设你有一个汽车列表,并要让其中的汽车按字母顺序排列。为简化这项任务,假设该列表中的所有值都是小写的。

cars.py

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

方法sort()(见❶)永久性地修改列表元素的排列顺序。现在,汽车是按字母顺序排列的,再也无法恢复到原来的排列顺序:

['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()后,列表元素的排列顺序并没有变(见❹)。如果要按与字母顺序相反的顺序显示列表,也可向函数sorted()传递参数reverse=True。

注意在并非所有的值都是小写时,按字母顺序排列列表要复杂些。决定排列顺序时,有多种解读大写字母的方式,要指定准确的排列顺序,可能比我们这里所做的要复杂。然而,大多数排序方式是以本节介绍的知识为基础的。

3.3.3 倒着打印列表

要反转列表元素的排列顺序,可使用方法reverse()。假设汽车列表是按购买时间排列的,可轻松地按相反的顺序排列其中的汽车:

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

注意,reverse()不是按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排列顺序:

['bmw', 'audi', 'toyota', 'subaru'] 
['subaru', 'toyota', 'audi', 'bmw']

方法reverse()永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,只需对列表再次调用reverse()即可。

3.3.4 确定列表的长度

使用函数len()可快速获悉列表的长度。在下面的示例中,列表包含四个元素,因此其长度为4:

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

需要完成如下任务时,len()很有用:明确还有多少个外星人未被射杀,确定需要管理多少项可视化数据,计算网站有多少注册用户,等等。

注意Python计算列表元素数时从1开始,因此确定列表长度时,你应该不会遇到差一错误。

动手试一试

练习3-8:放眼世界

想出至少5个你渴望去旅游的地方。

将这些地方存储在一个列表中,并确保其中的元素不是按字母顺序排列的。

按原始排列顺序打印该列表。不要考虑输出是否整洁的问题,只管打印原始Python列表。

使用sorted()按字母顺序打印这个列表,同时不要修改它。再次打印该列表,核实排列顺序未变。

使用sorted()按与字母顺序相反的顺序打印这个列表,同时不要修改它。

再次打印该列表,核实排列顺序未变。

使用reverse()修改列表元素的排列顺序。打印该列表,核实排列顺序确实变了。

使用reverse()再次修改列表元素的排列顺序。打印该列表,核实已恢复到原来的排列顺序。

使用sort()修改该列表,使其元素按字母顺序排列。打印该列表,核实排列顺序确实变了。

使用sort()修改该列表,使其元素按与字母顺序相反的顺序排列。打印该列表,核实排列顺序确实变了。

place = ["lasa","chengdu","chongqing","guilin","kunming"] 
print(place) 
print(sorted(place)) 
print(place) 
place.reverse() 
print(place) 
place.reverse() 
print(place) 
place.sort() 
print(place) 
place.sort(reverse=True) 
print(place)

练习3-9:晚餐嘉宾

在完成练习3-4~练习3-7时编写的程序之一中,使用len()打印一条消息,指出你邀请了多少位嘉宾来共进晚餐。

练习3-10:尝试使用各个函数

想想可存储到列表中的东西,如山川、河流、国家、城市、语言或你喜欢的任何东西。编写一个程序,在其中创建一个包含这些元素的列表,然后,对于本章介绍的每个函数,都至少使用一次来处理这个列表。

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

刚开始使用列表时,经常会遇到一种错误。假设你有一个包含三个元素的列表,却要求获取第四个元素:

motorcycles.py

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

这将导致索引错误 :

Traceback (most recent call last): 
    File "C:\Users\Administrator\Desktop\5.py", line 2, in <module> print(motorcycles[3]) 
IndexError: list index out of range

Python试图向你提供位于索引3处的元素,但它搜索列表motorcycles时,却发现索引3处没有元素。鉴于列表索引差一的特征,这种错误很常见。有些人从1开始数,因此以为第三个元素的索引为3。然而在Python中,第三个元素的索引为2,因为索引是从0开始的。

索引错误意味着Python在指定索引处找不到元素。程序发生索引错误时,请尝试将指定的索引减1,然后再次运行程序,看看结果是否正确。

别忘了,每当需要访问最后一个列表元素时,都可使用索引-1。这在任何情况下都行之有效,即便你最后一次访问列表后,其长度发生了变化:

motorcycles = ['honda', 'yamaha', 'suzuki'] 
print(motorcycles[-1])

索引-1总是返回最后一个列表元素,这里为值'suzuki':

suzuki

仅当列表为空时,这种访问最后一个元素的方式才会导致错误:

motorcycles = [] 
print(motorcycles[-1])

列表motorcycles不包含任何元素,因此Python返回一条索引错误消息:

Traceback (most recent call last): 
    File "C:\Users\Administrator\Desktop\5.py", line 2, in <module> print(motorcycles[-1]) 
IndexError: list index out of range

注意发生索引错误却找不到解决办法时,请尝试将列表或其长度打印出来。列表可能与你以为的截然不同,在程序对其进行了动态处理时尤其如此。通过查看列表或其包含的元素数,可帮助你找出这种逻辑错误。

动手试一试

练习3-11:有意引发错误

如果你还没有在程序中遇到过索引错误,就尝试引发一个这种错误。在你的一个程序中,修改其中的索引,以引发索引错误。关闭程序前,务必消除这个错误。

3.5 小结

在本章中,学习了:

列表是什么以及如何使用其中的元素;

如何定义列表以及如何增删元素;

如何对列表进行永久性排序,以及如何为展示列表而进行临时排序;

如何确定列表的长度,以及在使用列表时如何避免索引错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是七年级计算机系统的组成教案,初中信息技术河大版七年级全册第2节 计算机系统的基本组成教案: 【教学目标】 1. 了解计算机系统的基本组成部分; 2. 掌握计算机硬件和软件之间的关系; 3. 了解计算机系统的工作原理。 【教学重点】 1. 计算机系统的基本组成部分; 2. 计算机硬件和软件之间的关系。 【教学难点】 1. 计算机系统的工作原理; 2. 计算机硬件和软件之间的关系。 【教学过程】 一、导入新课 通过展示计算机,向学生介绍计算机的基本概念,引发学生对计算机的认识和兴趣。 二、讲解计算机系统的基本组成部分 1. 讲解计算机硬件的基本组成部分:中央处理器、内存、硬盘、显示器、键盘、鼠标等; 2. 讲解计算机软件的基本组成部分:系统软件、应用软件等。 三、计算机硬件和软件之间的关系 讲解计算机硬件和软件之间的关系,包括硬件和软件的协同工作原理。 四、计算机系统的工作原理 1. 讲解计算机系统的工作原理; 2. 展示计算机系统的工作流程。 五、小结本节课内容 通过引导学生回顾本节课内容,总结计算机系统的基本组成部分和计算机硬件和软件之间的关系。 【教学反思】 通过本节课的教学,让学生了解计算机系统的基本组成部分和计算机硬件和软件之间的关系,更好地认识计算机系统的工作原理。在教学过程中,要注重理论与实践相结合,引导学生通过实践体验计算机系统的工作流程,加深学生对计算机系统的理解和认识。同时,要注重学生的参与和互动,通过提问、讨论等方式,激发学生的思考和探究能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值