概述
1. 基础知识
1.1组合数据类型
组合数据类型能够将多个同类型或者不同类型的数据组织起来,通过单一的表示使数据操作更有序、更容易。根据数据之间的关系,组合数据类型可以分为3类:序列类型、集合类型和映射类型。
序列类型是一个元素向量,元素之间存在先后关系,通过序号访问。
集合类型是一个元素集合,元素之间无序,相同元素在集合中唯一存在。
映射类型是“键-值”数据项组合,每个元素是一个键值对,表示为(key,value)。
1.2列表
列表是包含0个或多个对象引用的有序序列,属于序列类型。由一系列按特定顺序排列的元素组成,它与字符串类似。在字符串中,每个值都是字符;列表的最大特点就是其中的值可以是任何数据类型。列表中的值称为元素。创建列表最简单的方法就是用方括号([和])将元素包括起来,并用逗号来分割其中的元素。列表类型的操作总结如下:
函数或方法 | 描述 |
ls[i]=x | 替换列表ls第i数据项为x |
ls[i:j]=lt | 用列表lt替换列表ls中第i到j项数据(不含第j项,同下) |
ls[i:j:k]=lt | 用列表lt替换列表ls中第i到j项以k为步数的数据 |
del ls[i:j] | 删除列表ls第i到第j项数据,等价于ls[i:j]=[] |
del ls[i:j:k] | 删除列表ls第i到第j项以k为步数的数据 |
ls.extend(lt) | 将列表lt元素增加到列表ls中 |
ls*=n | 更新列表ls,其元素重复n次 |
ls.append(x) | 在列表ls最后增加一个元素x |
ls.clear() | 删除列表ls中的所有元素 |
ls.copy() | 生成一个新列表,复制ls中的所有元素 |
ls.insert(i,x) | 在列表ls的第i位置增加元素x |
ls.pop() | 将列表ls中的第i项元素取出并删除该元素 |
ls.remove(x) | 移除列表中值x的第一个匹配项 |
ls.reverse() | 将列表中的元素反转 |
列表的索引
访问列表中的元素可以通过方括号加索引进行。例如,我们创建一个列表l=[1,2,3,'a'],可以通过l[0]来访问列表的第一个元素。注意,这里的索引是从0开始的。此外,Python中还有一种使用负数的索引方法。其中,整数值-1表示列表中的最后一个元素的索引,-2表示倒数第二个元素的索引。例如在上例中l[-1]的值为‘a’。
列表的切片
列表中切片的公式为:l=[strat : stop: step]。
1.3字典
在Python中,字典是一系列键-值对,每个键都与一个值相关联,你可以使用键来访问与之相关联的值,这些值可以使数字、字符串、列表乃至字典,字典是用放在花括号{}中的有一系列键-值表示:
{<键1>:<值1>, <键2>:<值2>, … , <键n>:<值n>}
其中,键和值通过冒号连接,不同键值对通过逗号隔开。例如,在成绩分档系统中,我们就可以使用字典将将学生的姓名和成绩关联起来,学生姓名作为键,学生成绩作为值:
Stu_Dic={'Tom' : 58, 'Jerry' : 67, 'Peter' : 82, 'Alex' : 93, 'Lily' : 89, 'Steven' : 97, 'Jack': 74}
注意,字典可以看成是键值对的集合,各个元素之间没有顺序。
字典键值对的访问
字典最主要的操作是查找有特定键值对应的值,通过索引实现。一般来说,字典中键值对的访问模式如下:
<值> = <字典变量>[<键>]
字典中对某个键值的修改可以通过中括号的访问和赋值实现。
字典类型的操作总结
函数或方法 | 描述 |
<>.keys() | 返回所有的键信息 |
<>.values() | 返回所有的值信息 |
<>.items() | 返回所有的键值对 |
<>.get(<key>,<default>) | 键存在,则返回相应值,否则返回默认值 |
<>.pop(<key>,<default>) | 键存在则返回相应值,同时删除键值对,否则返回默认值 |
<>.popitem() | 随机从字典中取出一个键值对,以元组(key, value)形式返回 |
<>.clear() | 删除所有键值对 |
del <d>[<key>] | 删除字典中某一个键值对 |
<key> in <d> | 如果键值对在字典中则返回True,否则返回False |
2实验步骤
2.1创建并访问列表
Step 1: 打开Spyder,新建一个名为c4_ex1.py的文件,并输入以下代码:
1 2 3 4 | #新建列表 Stu_Name = ['Tome', 'Jerry', 'Peter', 'Alex', 'Jack'] #打印列表 print(Stu_Name) |
第1行代码创建了一个列表,并将该列表的值赋给了名为Stu_Name的变量。
Step 2:请继续输入print(Stu_Name[1]),思考一下,这里我们使用Stu_Name[1]来访问列表中的第 个元素
在Python中,要访问列表中的任何元素,只需将列表的名称和该元素的位置或者索引告诉Python即可。例如,在Stu_Name[1]中,列表的名称为Stu_Name,元素索引为1。这里,我们需要特别注意,Python中的索引是从0而不是从1开始的。此外,索引可以用负数表示,尝试一下,验证Stu_Name[-1], Stu_Name[-2], Stu_Name[-3]的结果。
Step 3:我们将索引改成7,运行程序,输出结果为如下:
这是在使用列表是非常常见的错误,这是因为索引超出了列表中值得个数。再次提醒,列表中的索引值是从0开始的,列表Stu_Name中的元素个数是5,元素索引是从0到4。
2.2列表的操作
列表基本操作
Step 1:修改元素的值。在c4_ex1.py文件中继续输入以下代码:
5 6 7 | #修改元素值 Stu_Name[0] = 'David' print(Stu_Name) |
我们发现列表中的第一个元素值被修改。由此,我们可以得出:要修改列表元素,只需要指定列表名和要修改的元素的索引,再指定该元素的新值即可。
Step 2:在列表中添加元素,可以分为两种情况:一是在列表末尾添加元素,需要用到append()函数;而是在列表中插入元素,需要用到insert()函数。在c4_ex1.py文件中继续输入以下代码:
8 9 10 11 12 13 | #在列表末尾添加元素 Stu_Name.append('Ben') print(Stu_Name) #在列表中插入元素 Stu_Name.insert(1, 'Nancy') print(Stu_Name) |
请查询append()和insert()的具体用法,主要查看其形参和返回值。
Step 3:我们可以使用del语句和remove()函数来删除列表元素。其中,使用del语句需要我们知道要删除的元素所在列表中的位置,remove()函数的作用是根据值删除元素。例如,在第五行代码中,使用remove()函数来删除值为‘Nancy’的元素。
在c4_ex1.py文件中继续输入以下代码:
14 15 16 17 18 | #删除列表文件 del Stu_Name[0] print(Stu_Name) Stu_Name.remove('Nancy') print(Stu_Name) |
列表排序
当我们创建一个列表时,我们无法预知列表的排列顺序。例如在成绩的例子中,我们在完成所有人员的成绩输入以后,想要按成绩从高到底排列,应该怎么做呢?
Step 1:新建一个名为c4_ex2.py的文件,输入代码如下:
1 2 3 4 5 | #创建一个列表存储学生分数 Stu_Grade = [58, 82, 67, 93, 89] #进行排序 Stu_Grade.sort() print(Stu_Grade) |
根据输出结果,我们可以得出sort()函数的作用是:
Step 2:将第4行改为Stu_Grade.reverse(),观察结果,我们可以得出reverse()函数的作用是:
Step 3:在新一行输入print(len(Stu_Score)),观察结果,我们得出len()函数的作为是:
遍历列表
遍历是指访问列表中的每个元素。我们可以使用循环结构来完成。
Step 1:在c4_ex1.py文件中,继续输入以下代码,来遍历Stu_Name列表:
19 20 21 | #遍历列表 for temp in Stu_Name: print(temp) |
列表切片
试想一下,如果我们只需要提取列表中前三个学生,应该怎么做?答案是将列表切片,其目的是处理列表中的部分元素。
Step 1:在c4_ex1.py文件中,继续输入以下代码:
22 23 24 25 26 | #列表切片 print(Stu_Name[0:2]) print(Stu_Name[1:3]) print(Stu_Name[:2]) print(Stu_Name[2:]) |
根据输出结果,体会并总结切片的用法:
Step 3:遍历列表中的部分元素,称为遍历切片。输入以下代码:
27 28 29 | #遍历切片 for temp in Stu_Name[0:3]: print(temp) |
2.3字典的创建
新建一个名为c4_ex3.py的文件,并输入以下代码创建字典:
1 2 3 | #创建字典 Stu_Dict={'Tom' : 58, 'Jerry' : 67, 'Peter' : 97, 'Alex' : 93, 'Jack' : 84} print(Stu_Dict) |
在上面这个例子中,‘Tom’就是一个字典中的键,他的得分58就是字典中的值。
2.4字典的操作
访问字典的值
要访问字典中的值,只需要制定字典名和放在方括号内的键,例如继续在c4_ex3.py中输入以下代码来访问Jerry和Peter的得分。
4 5 6 | #访问字典中Jerry和peter的得分 print(Stu_Dict['Jerry']) print(Stu_Dict['Peter']) |
修改字典中的值
修改字典中的值:要修改字典的值,可一次指定字典名、用方括号括起来的键和与该键相关联的新值。例如在上例中,我们需要将学生Jerry的成绩改为99,只需要输入Stu_Dic[‘Jerry’]=99
添加删除键值对
Step 1:添加键-值对:字典是一种动态结构,可以随时添加键-值对,例如我们现在要在之前的字典中添加一个学生Ben,他的成绩是83分,可以输入Stu_Dict[‘Ben’]=83
Step 2:删除键-值对:对于字典中不再需要的信息,可以使用del语句将对应的键-值对彻底删除,只需要指定字典名和要删除的键。例如,我们现在要删除学生Lily的信息,只需要输入del Stu_Dict[‘Jack’]
请在文件c4_ex3.py中继续输入如下代码,测试添加和删除键值对的方法:
7 8 9 10 11 | #添加键值对 Stu_Dict['Ben']=83 #删除键值对 del Stu_Dict['Jack'] print(Stu_Dict) |
遍历字典
字典的遍历可以分为三个方面:遍历所有键值对、遍历所有键、遍历所有值
Step 1:遍历所有键值对。继续在文件c4_ex3.py中输入以下代码:
12 13 14 15 | #遍历所有键值对 for key, value in Stu_Dict.items(): print("Key: " + key) print("Value: " + str(value)) |
这里使用了字典的item()方法,它返回一个键值对的列表,请探索该方法的用法,并解释为什么在15行中,需要使用str()方法?
Step 2:也可以单独遍历字典中的键和值,分别使用keys()方法和values()方法。继续在文件c4_ex3.py中输入以下代码:
16 17 18 19 20 21 | #遍历所有键 for name in Stu_Dict.keys(): print(name) #遍历所有值 for grade in Stu_Dict.values(): print(grade) |
字典嵌套
在实际使用中,我们有事需要将一系列字典存储在列表中,获将列表作为值存储在字典中,就被称为嵌套。例如,我们上例中的同学是一个班的,现在我们需要存储其他班级学生的信息,应该怎么办呢?一个办法就是创建一个班级列表,其中的每一个班级都是一个字典,包含该班级中所有学生的姓名和分数,如以下代码所示:
22 23 24 25 26 27 28 | #字典的嵌套 Class_1 = {'Tom' : 58, 'Jerry' : 67} Class_2 = {'Peter' : 97, 'Alex' : 93, 'Jack' : 84} Class_Total = [Class_1, Class_2] #遍历列表并打印 for Stu in Class_Total: print(Stu) |
在上面这段代码中,我们用两个字典Class_1和Class_2来表示两个班级,其中记录了两个班级的学生和对应的分数。之后,我们用一个列表Class_0存放班级信息,第5-6行则是用来遍历这个列表并打印出来。
3.练习题
3.1 编写一个名为chop的函数,让其接收如下列表作为参数,删除该列表的第一个元素和最后一个元素,返回新列表并打印输出:
t=['good', 'good', 'study', 'day', 'day', 'up']
3.2 创建一个名为 cities 的字典,其中将三个城市名用作键;对于每座城市,都创建一个字典,并在其中包含该城市所属的国家、人口约数以及一个有关该城市的简介。在表示每座城市的字典中,应包含 country、 population 和 introduction 三个键。最后,通过遍历的形式将每座城市的名字以及有关它们的信息都打印出来。
3.3 编写一个名为cumsum的函数,该函数接收一个数字列表,返回一个新的列表,其中第i个元素是原先列表前i个元素和。例如:
>>>t = [1,2,3]
>>>cumsum(t)
[1,3,6]
参考资料:
1. 像计算机科学家一样思考Python
2. Python123
3. Python编程从入门到实践
最后
以上就是呆萌钢铁侠为你收集整理的4 组合数据类型——列表与字典1. 基础知识2实验步骤3.练习题参考资料:的全部内容,希望文章能够帮你解决4 组合数据类型——列表与字典1. 基础知识2实验步骤3.练习题参考资料:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复