学Python的漫画漫步进阶 -- 第六步
- 六、容器类型的数据
- 6.1 序列
- 6.1.1 序列的索引操作
- 6.1.2 加和乘操作
- 6.1.3 切片操作
- 6.1.4 成员测试
- 6.2 列表
- 6.2.1 创建列表
- 6.2.2 追加元素
- 6.2.3 插入元素
- 6.2.4 替换元素
- 6.2.5 删除元素
- 6.3 元组
- 6.3.1 创建元组
- 6.3.2 元组拆包
- 6.4 集合
- 6.4.1 创建集合
- 6.4.2 修改集合
- 6.5 字典
- 6.5.1 创建字典
- 6.5.2 修改字典
- 6.5.3 访问字典视图
- 6.6 动动手——遍历字典
- 6.7 练一练
- 6.8 容器类型的总结
六、容器类型的数据
若我们想将多个数据打包并且统一管理,应该怎么办?
Python内置的数据类型如序列(列表、元组等)、集合和字典等可以容纳多项数据,我们称它们为容器类型的数据。
6.1 序列
序列(sequence)是一种可迭代的、元素有序的容器类型的数据。
序列包括列表(list)、字符串(str)、元组(tuple)和字节序列(bytes)等。
6.1.1 序列的索引操作
序列示例:Hello字符串。
序列中的元素都是有序的,每一个元素都带有序号,这个序号叫作索引。索引有正值索引和负值索引之分。
我们是通过下标运算符访问序列中的元素的,下标运算符是跟在容器数据后的一对中括号([]),中括号带有参数,对于序列类型的数据,这个参数就是元素的索引序号。
我们在Python Shell中运行代码,看看运行结果怎样:
6.1.2 加和乘操作
加(+)和乘()运算符也可以用于序列中的元素操作。加(+)运算符可以将两个序列连接起来,乘()运算符可以将两个序列重复多次。
我们在Python Shell中运行代码,看看运行结果怎样?
6.1.3 切片操作
序列的切片(Slicing)就是从序列中切分出小的子序列。
切片运算符的语法形式为[start:end:step]。其中,start是开始索引,end是结束索引,step是步长(切片时获取的元素的间隔,可以为正整数,也可以为负整数)。
注意:切下的小切片包括start位置的元素,但不包括end位置的元素,start和end都可以省略。
下面对字符串变量a进行切片操作[1:3],开始索引为1,结束索引为3,省略步长(默认值为1)。
我们在Python Shell中运行省略步长的示例代码,看看运行结果怎样:
下面对字符串变量a进行切片操作[0:3:2],开始索引为0,结束索引为3,步长为2。
我们在Python Shell中运行没有省略步长的示例代码,看看运行结果怎样:
6.1.4 成员测试
成员测试运算符有两个:in和not in,in用于测试是否包含某一个元素,not in用于测试是否不包含某一个元素。
我们在Python Shell中运行代码,看看运行结果怎样:
6.2 列表
列表(list)是一种可变序列类型,我们可以追加、插入、删除和替换列表中的元素。
6.2.1 创建列表
创建列表有两种方法。
1 list(iterable)函数:参数iterable是可迭代对象(字符串、列表、元组、集合和字典等)。
2 [元素1,元素2,元素3,⋯]:指定具体的列表元素,元素之间以逗号分隔,列表元素需要使用中括号括起来。
我们在Python Shell中运行代码,看看运行结果怎样:
6.2.2 追加元素
列表是可变的序列对象,列表可以追加元素。
1 在列表中追加单个元素时,可以使用列表的append(x)方法。
2 在列表中追加多个元素时,可以使用加(+)运算符或列表的extend(t)方法
我们在Python Shell中运行代码,看看运行结果怎样:
6.2.3 插入元素
想向列表中插入元素时,可以使用列表的list.insert(i,x)方法,其中,i指定索引位置,x是要插入的元素。
我们在Python Shell中运行代码,看看运行结果怎样:
6.2.4 替换元素
想替换列表中的元素时,将列表下标索引元素放在赋值符号(=)的左边,进行赋值即可。
我们在Python Shell中运行代码,看看运行结果怎样:
6.2.5 删除元素
想在列表中删除元素时,可使用列表的list.remove(x)方法,如果找到匹配的元素x,则删除该元素,如果找到多个匹配的元素,则只删除第一个匹配的元素。
6.3 元组
元组(tuple)是一种不可变序列类型。
6.3.1 创建元组
创建元组时有两种方法。
1 tuple(iterable)函数:参数iterable是可迭代对象(字符串、列表、元组、集合和字典等)。
2 (元素1,元素2,元素3,⋯):指定具体的元组元素,元素之间以逗号分隔。对于元组元素,可以使用小括号括起来,也可以省略小括号。
我们在Python Shell中运行代码,看看运行结果怎样:
6.3.2 元组拆包
创建元组,并将多个数据放到元组中,这个过程被称为元组打包。与元组打包相反的操作是拆包,就是将元组中的元素取出,分别赋值给不同的变量。
我们在Python Shell中运行代码,看看运行结果怎样:
将元组(102,‘张三’)拆包到变量s_id和s_name
6.4 集合
集合(set)是一种可迭代的、无序的、不能包含重复元素的容器类型的数据。
6.4.1 创建集合
我们可以通过以下两种方式创建集合。
1 set(iterable)函数:参数iterable是可迭代对象(字符串、列表、元组、集合和字典等)。
2 {元素1,元素2,元素3,⋯}:指定具体的集合元素,元素之间以逗号分隔。对于集合元素,需要使用大括号括起来。
我们在Python Shell中运行代码,看看运行结果怎样:
6.4.2 修改集合
修改集合类似于修改列表,可以向其中插入和删除元素。修改可变集合有如右所示的常用方法。
add(elem):添加元素,如果元素已经存在,则不能添加,不会抛出错误。
remove(elem):删除元素,如果元素不存在,则抛出错误。
clear():清除集合。
我们在Python Shell中运行代码,看看运行结果怎样:
6.5 字典
字典(dict)是可迭代的、通过键(key)来访问元素的可变的容器类型的数据。
字典由两部分视图构成:键视图和值视图。键视图不能包含重复的元素,值视图能。在键视图中,键和值是成对出现的。
6.5.1 创建字典
我们可以通过以下两种方法创建字典。
1 dict()函数。
2 {key1:value1,key2:value2,…,key_n:value_n}:指定具体的字典键值对,键值对之间以逗号分隔,最后用大括号括起来。
我们在Python Shell中运行代码,看看运行结果怎样:
6.5.2 修改字典
字典可以被修改,但都是针对键和值同时操作的,对字典的修改包括添加、替换和删除。
我们在Python Shell中运行代码,看看运行结果怎样:
6.5.3 访问字典视图
我们可以通过字典中的三种方法访问字典视图。
我们在Python Shell中运行代码,看看运行结果怎样。
items():返回字典的所有键值对视图。keys():返回字典键视图。
values():返回字典值视图。
第2行:返回字典的所有键值对视图dict_items
第4行:dict_items可以使用list()函数返回键值对列表
第6行:返回字典键视图dict_keys
第8行:dict_keys可以使用list()函数返回键列表
第10行:返回字典值视图dict_values
第12行:dict_values可以使用list()函数返回值列表
6.6 动动手——遍历字典
我们来动手试一试,参考代码如下:
6.7 练一练
判断对错(请在括号内打√或×,√表示正确,×表示错误)。
1)列表的元素是不能重复的。()
2)集合的元素是不能重复的。()
3)字典由键和值两个视图构成,键视图中的元素不能重复,值视图中的元素可以重复。()
4)在序列的切片运算符[start:end]中,start是开始索引,end是结束索引。切下来的子列表中包括start和end索引位置的元素。()
6.8 容器类型的总结
Python中有几种主要的容器类型,这些类型在编程中非常有用。以下是这些容器类型的总结:
- 列表(List):列表是Python中最常用的容器类型之一。它们是有序的集合,可以包含任何类型的对象。列表是可变的,这意味着您可以在运行时添加、删除或更改列表中的元素。
- 元组(Tuple):元组和列表类似,但有一个重要的区别:元组是不可变的。也就是说,一旦创建了一个元组,就不能更改其中的元素。因此,元组通常用于存储不应该被更改的值。
- 集合(Set):集合是无序的、不重复的元素集合。集合是可变的,可以添加或删除元素。集合主要用于测试成员资格,消除重复元素,以及计算交集、并集和差集等。
- 字典(Dictionary):字典是无序的键值对集合。每个键都唯一,并且与一个值相关联。字典是可变的,可以添加、删除或更改键值对。字典主要用于存储和查找关联数据。
- 列表推导式(List Comprehension):列表推导式是Python中创建新列表的一种方式。它们允许您以一种简洁、易读的方式生成新的列表。
- 生成器(Generator):生成器是一种特殊类型的迭代器,用于在需要时才生成值,从而节省内存。生成器在需要时才生成下一个值,这使得它们非常适合于大型数据集。
- 集合推导式(Set Comprehension):集合推导式是Python中创建新集合的一种方式。它们允许您以一种简洁、易读的方式生成新的集合。
- 字典推导式(Dictionary Comprehension):字典推导式是Python中创建新字典的一种方式。它们允许您以一种简洁、易读的方式生成新的字典。
以上就是Python中主要的容器类型。每种类型都有其特定的用途,选择使用哪种类型取决于您的特定需求。