天天看点

我的学习笔记:06容器类型的数据

本篇学习前需要思考一下,若将多个数据打包并且统一管理,应该怎么做?

Python内置的数据类型如序列(列表、元组等),集合和字典等可以容纳多项数据,我们称它们为容器类型的数据。

本篇就开始学习Python中内置的容器类型的数据,包括①系列②列表③元组④集合⑤字典

一、序列(sequence)是一种可迭代的、元素有序的容器类型的数据。

序列包含列表(list)、字符串(str)、元组(tuple)和字节序列(bytes)等

1、序列的索引操作

序列示例:Hello字符串

我的学习笔记:06容器类型的数据
我的学习笔记:06容器类型的数据

序列中的元素都是有序的,每一个元素都带有序号,这个序号叫索引。索引有正值索引和负值索引之分。

我们是通过下标运算符访问序列中的元素的,下标运算符是跟在容器数据后的一对中括号([]),中括号带有参数,对于序列类型的数据,这个参数就是元素的索引序号。

我的学习笔记:06容器类型的数据

我们在Python Shell中运行代码,看看运行结果如何。

我的学习笔记:06容器类型的数据

2、加和乘操作

加(+)和乘(*)运算符也可以用于序列中的元素操作。加(+)运算符可以将两个序列连接起来,乘(*)运算符可以将两个序列重复多次。

我的学习笔记:06容器类型的数据

我们在Python Shell中运行代码,看看运行结果怎样。

我的学习笔记:06容器类型的数据

3、切片操作

序列的切片(slicing)就是从序列中切分出小的子序列。

切片运算符的语法形式是:[start:end:step]。其中,start就是开始索引,end是结束索引,step是步长(切片时获取的元素的间隔,可以为正整数,也可以是负整数)。

我的学习笔记:06容器类型的数据

注意:切下的小切片包括start位置的元素,但不包括end位置的元素,start和end都可以省略。

下面对字符串变量a进行切片操作[1:3],开始索引为1,结束索引为3,省略步长(默认值为1)。

我的学习笔记:06容器类型的数据

我们在Python Shell中运行省略步长的示例代码,看看运行结果怎样。

我的学习笔记:06容器类型的数据

下面对字符串变量a进行没有切片操作[0:3:2],开始索引为0,结束索引为为3,步长为2。

我的学习笔记:06容器类型的数据

我们在Python Shell中运行省略步长的示例代码,看看运行结果怎样。

我的学习笔记:06容器类型的数据

4、成员测试

成员测试运算符有两个:in和not in,in用于测试是否包含某一个元素,not in用于测试是否不包含某一元素。

我们在Python Shell中运行代码,看看运行结果怎样。

我的学习笔记:06容器类型的数据

二、列表

列表(list)是一种可变序列类型,我们可以追加、插入、删除和替换列表中的元素

1、创建列表

创建列表有两种方法

①list(interable)函数:参数interable是可迭代对象(字符串、列表、元组、集合和字典等)。

②[元素1,元素2,元素3,…]:指定具体的列表元素,元素之间以逗号隔开,列表元素需要使用中括号括起来。

我的学习笔记:06容器类型的数据

我们在Python Shell中运行代码,看看运行结果怎样。

我的学习笔记:06容器类型的数据

2、追加元素

列表是可变的序列对象,列表可以追加元素。

①在列表中追加单个元素时,可以使用列表append(x)方法。

②在列表中追加多个元素时,可以使用加(+)运算符或列表的extend(t)方法。

我的学习笔记:06容器类型的数据

问:本篇的append(x)被称为方法,list(interable)被称为函数,方法和函数有什么区别?

答:在Python中方法和函数是有区别的,方法隶属于类,通过类或对象调用方法,例如在list.append(x)中,list是列表对象;函数不隶属于任何类,直接调用即可,例如list(interable).

我们在Python Shell中运行代码,看看运行结果怎样。

我的学习笔记:06容器类型的数据

3、插入元素

想向列表中插入元素时,可以使用列表的list.insert(i,x)方法,其中,i指定索引位置,x是要插入的元素。

我的学习笔记:06容器类型的数据

我们在Python Shell中运行代码,看看运行结果怎样。

我的学习笔记:06容器类型的数据

list.insert(2,80) 就是在索引2的位置插入一个元素,新元素的索引为2

4、替换元素

在替换列表中的元素时,将列表下标索引元素放在赋值运算符号(=)的左边,进行赋值即可。

我的学习笔记:06容器类型的数据

我们在Python Shell中运行代码,看看运行结果怎样。

我的学习笔记:06容器类型的数据

5、删除元素

想在列表中删除元素时,可使用列表的list.remove(x)方法,如果找到匹配的元素x,则删除该元素,如果找到多个匹配的元素,则只删除第一个匹配的元素。

我的学习笔记:06容器类型的数据
我的学习笔记:06容器类型的数据

三、元组

元组(tuple)是一种不可变序列类型

1、创建元组

创建元组有两种方法。

①tuple(interable)函数:参数interable是可迭代对象(字符串、列表、元组、集合和字典等)。

我的学习笔记:06容器类型的数据

②(元素1,元素2,元素3,…):指定具体的元组元素,元素之间以逗号隔开,对于元组元素,可以使用小括号括起来,也可以省略小括号。

我的学习笔记:06容器类型的数据

我们在Python Shell中运行代码,看看运行结果怎样。

我的学习笔记:06容器类型的数据

2、元组拆包

创建元组,并将多个数据放到元组中,这个过程被称为元组打包。

我的学习笔记:06容器类型的数据

与元组打包相反的操作是拆包,就是将元组中的元素取出,分别赋值给不同的变量。

我的学习笔记:06容器类型的数据

我们在Python Shell中运行代码,看看运行结果怎样。

我的学习笔记:06容器类型的数据

将元组(102,‘张三’)拆包到变量s_id和s_name

问:本例元组(102,‘张三’)中的两个元素分别是不同的数据类型,这种情况是否允许呢?

我的学习笔记:06容器类型的数据

答:当然允许,不仅是元组,事实上在所有容器类型的数据中都可以保存任意类型的数据,只不过通常在容器中只保存相同类型的数据。

四、集合

集合(set)是一种可迭代,无序的、不能包含重复元素的容器类型的数据

1、创建集合

我们可以通过以下两种方式来创建集合。

①set(interable)函数:参数interable是可迭代对象(字符串、列表、元组、集合和字典等)。

②{元素1,元素2,元素3,…}:指定具体的集合元素,元素之间用逗号隔开,对于集合元素,需要使用大括号括起来。

我的学习笔记:06容器类型的数据

我们在Python Shell中运行代码,看看运行结果怎样。

我的学习笔记:06容器类型的数据

2、修改集合

修改集合类似于修改列表,可以向其中插入和删除元素,修改可变集合有下面的常用方法。

①add(elem):添加元素,如果元素已经存在,则不能添加,不会抛出错误。

②remove(elem):删除元素,如果元素不存在,则抛出错误。

③clear():清除集合。

我们在Python Shell中运行代码,看看运行结果怎样。

我的学习笔记:06容器类型的数据

五、字典

字典(dict)是可迭代的,通过键(key)来访问元素的可变的容器类型的数据。

字典由两个部分视图构成:键视图和值视图。键视图不能包含重复的元素,值视图能。在键视图中,键和值是成对出现的。

我的学习笔记:06容器类型的数据

1、创建字典

我们可以通过以来两种方法创建字典。

①dict()函数

②{key1:value1,key2:value2,key3:value3,…,key_n:value_n}:指定具体的字典键值对,键值对之间以逗号隔开,最后用大括号阔阔起来。

我们在Python Shell中运行代码,看看运行结果怎样。

我的学习笔记:06容器类型的数据

2、修改字典

字典可以被修改,但都是针对键和值同时操作的,对字典的修改包括添加、替换和删除。

我们在Python Shell中运行代码,看看运行结果怎样。

我的学习笔记:06容器类型的数据

3、访问字典视图

我们可以通过字典中的三种方法访问字典视图。

我们在Python Shell中运行代码,看看运行结果怎样。

item():返回字典的所有键值对视图。

key():返回字典键视图

value():反对字典值视图

我的学习笔记:06容器类型的数据

六、动动手——遍历字典

问:遍历是从容器中取出每一个元素的过程,我们在进行序列和集合遍历时使用for循环就可以了,但字典有两个视图,应该如何遍历呢?

答:字典有两个视图,在遍历时,可以只遍历值视图,也可以只遍历键视图,也可以同时遍历。具体遍历哪个视图就要看业务需求了。这些遍历都是通过for循环来实现的。

我们来动手试一试,参开代码如下:

我的学习笔记:06容器类型的数据

参考代码

我的学习笔记:06容器类型的数据

通过win+r打开运行,输入cmd回车,输入代码路径,得出参考代码的运行结果

这一篇讲了序列(列表和元组),集合和字典这几种容器类型的数据,其中列表和元组属于序列,这几种容器类型都是可迭代的。最大的特点如下:

练一练:

判断对错(请在括号中打“√”或“×”)

(1)列表的元素是不能重复的。(×)

(2)集合的元素是不能重复的。(√)

解析:集合元素是无序的,且不能重复

(3)字典由键和值两个视图构成,键视图中的元素不能重复,值视图中的元素可以重复。(√)

解析:字典由两个部分视图构成:键视图和值视图。键视图不能包含重复的元素,值视图能。

(4)在序列的切片运算符[start:end]中,start是开始索引,end是结束索引。且切下来的子列表中包含start和end索引位置的元素。(×)

解析:从序列中切下的小切片包括start位置的元素,但不包括end位置的元素。

大致回顾以上这篇所涉及到的知识点,结合练习去巩固消化。接下来是本周的使用收藏:

在第一篇《我的学习笔记:01了解一下Python》中我分享了一个免费的在线转换网站,可以完成PDF转WORD的工作,甚至还有好多PDF相关操作。今天就再介绍一个安卓手机端的转换APP(名称:格式转换)。在不开通会员的情况下,其提供的功能已经基本能够覆盖日常办公生活需求。涉及视频、音频 、图片、文档转换等。下班路上回个作业,总比折返会办公室要轻松些……

我的学习笔记:06容器类型的数据

1、开始页面 2、功能页面 3、将m3u8转MP4

当初现在这个软件后,还比较好奇m3u8是什么格式的文件来着?

经过查阅,M3U8文件是指UTF-8代码格式的M3U文件(记录了一个索引纯文本文件),我们可以根据它的索引找到对应的音视频网址。M3U8以文件列表形式存在,一个大文件分割成多个小文件,用M3U8来记录每个文件的地址。其主要应用在移动设备上。

继续阅读