数据结构论坛

首页 » 分类 » 常识 » 第二十九篇Python元组操作及使用米
TUhjnbcbe - 2024/8/14 16:57:00

阿萌准备编写一个班级通讯录程序,该程序可以记录每位同学的姓名、电话号码和年龄。阿萌该如何设计班级通讯录程序的数据结构呢?

阿萌最初设计的程序数据结构准备采用三个列表,三个列表分别存储每位同学的姓名、电话和年龄。

这样的数据结构也能够解决通讯录存储数据的问题,不过这不是最好的数据结构:一是程序需要同时处理三个列表数据,增加了程序代码的复杂度;二是数据的组织也非常松散,不够紧凑。

案例01代码的数据结构采用了阿萌设计的数据结构,分别创建了三个列表,用于存储每位同学的姓名、电话和年龄。代码使用了三个for循环录入每位同学的数据,并分别添加到三个列表。

从案例01的代码也可以看出,采用三个列表来存储通讯录增加了代码的复杂度,数据也不够紧凑,通讯录的数据分散在三个列表中,导致数据访问也非常麻烦。

Python提供了元组数据结构,英文名称是tuple。元组和列表一样,它也可以把不同类型的数据进行有序排列,并进行同一存储和操作。

与列表不同的是,元组赋值后所存储的数据不能被程序修改。可以将元组看作是只能读取数据不能修改数据的列表。元组的这个特点正好用于存储通讯录的数据项,通讯录生成后,通讯录的每个数据项一般不会变动。

创建元组的语法与列表相同,不同之处是元组使用小括号,列表使用方括号,元素之间也是用英文逗号分隔。

需要注意的是,当元组只有一个元素时,需要在元素的后面加一个英文逗号分隔符,以防止与表达式中的小括号混淆。这是因为小括号既可以表示元组,又可以表示表达式中的优先级算符,这就容易产生歧义。

元组元素也可以是任何类型的数据,元组创建完成后,元组不能再添加元素,也不能更新或删除元素。

案例02的代码演示了如何创建一个元组。当创建的元组只包含一个元素时,需要在元素的后面加一个英文逗号分隔符,以防止与表达式中的小括号混淆。

元组的访问和列表相同,可以直接使用索引访问元组中的单个数据项,也可以使用截取运算符访问子元组。

访问运算符包括[]和[:]运算符,用于访问元组中的单个数据项,或者一个子元组。

案例03的代码演示了如何访问元组的元素。变量名称为s的元组里面又包含了元组元素,当访问内嵌元组元素时,就需要两个索引来访问元组里面的元素。

元组的遍历方式和列表相同,都是使用for循环语句遍历元组的元素。

案例04的代码演示了如何使用for循环遍历元组。

阿萌掌握了元组结构,他准备采用列表和元组作为通讯录程序的数据结构,具体数据结构是使用元组存储同学的姓名、电话和年龄,元组作为列表的数据项。

阿萌根据设计的数据结构绘制了流程图。

有了流程图,阿萌开始编写代码。他启动PythonIDLE,在IDLE的Shell窗口新建一个代码文件,在新建的代码编辑窗口编写代码。

代码解读

在上面的代码中,首先创建一个空列表address_list,用于存储元组数据项,并创建变量count,用于存储同学数量,为了程序测试方便,count赋值为3。

使用for循环输入学生成绩,循环次数为学生人数加1。在每轮循环中,分别要求用户输入同学的姓名、电话和年龄,然后address_list调用append方法加入元组元素,元组元素在append方法的参数中直接创建。

遍历address_list,在每轮循环中使用当前索引获取元组数据项,输出元组元素。

课程小结

元组与列表相同,可以存储不同类型的内容。元组与列表有两个不同点。

第一个不同点是元组的创建使用小括号,而列表使用方括号,当创建只有一个元素的元组时,需要在这个元素的后面添加英文逗号。

第二个不同点是元组创建和赋值后,不能像列表一样添加、删除和修改元素,也就是说元组在程序运行过程中不能被修改。

上机练习

1、编写程序,创建一个元组names,names包含张三、李四、王五、赵二元素。

2、编写程序,创建一个元组numbers,numbers元素为89.3、78、96.1、88、92,遍历元组并求出元组的最大值。

3、编写程序,创建一个元组num,num元素为30,12,89,31,69,95,完成如下操作:

(1)使用print函数输出元组索引3~5的元素;

(2)使用print函数输出元组索引1的元素。

1
查看完整版本: 第二十九篇Python元组操作及使用米