本文是根据黑马程序员Python教程所作之笔记,目的是为了方便我本人以及广大同学们查漏补缺。
不想做笔记直接来我的频道。当然啦,自己的笔记才是最好的哦!
PS:感谢黑马程序员!
教程链接:黑马程序员最新Python教程,8天python从入门到精通,学python看这套就够了
Python基础模块总目录
第一章:你好Python
第二章:Python基础语法
第三章:Python判断语句
第四章:Python循环语句
第五章:Python函数
第六章:Python数据容器
第七章:Python函数进阶
第八章:Python文件操作
第九章:Python异常、模块与包
基础综合案例之数据可视化
学习数据容器,就是为了批量存储或批量使用多份数据
数据容器
Python中的数据容器:
一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素
每一个元素,可以是任意类型的数据,如字符串、数字、布尔等。
数据容器根据特点的不同,如:
是否支持重复元素
是否可以修改
是否有序,等
分为5类,分别是:列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)
它们各有特点,但都满足可容纳多个元素的特性。
列表的定义
基本语法:
列表内的每一个数据,称之为元素
以 [ ] 作为标识
列表内每一个元素之间用“,”逗号隔开
列表的定义方式:
使用[]的方式定义列表
注意:列表可以一次存储多个数据,且可以为不同的数据类型,支持嵌套
列表的下标(索引)
从列表中取出特定位置的数据可以使用:下标索引
如图,列表中的每一个元素,都有其位置下标索引,从前向后的方向,从0开始,依次递增
我们只需要按照下标索引,即可取得对应位置的元素。
列表的下标(索引) - 反向
或者,可以反向索引,也就是从后向前:从-1开始,依次递减(-1、-2、-3…)
如图,从后向前,下标索引为:-1、-2、-3,依次递减。
嵌套列表的下标(索引)
如果列表是嵌套的列表,同样支持下标索引
如图,下标就有2个层级了。
列表的常用操作(方法)
列表除了可以:
定义
使用下标索引获取值
以外,列表也提供了一系列功能:
插入元素
删除元素
清空列表
修改元素
统计元素个数
等等功能,这些功能我们都称之为:列表的方法
列表的查询功能(方法)
回忆:函数是一个封装的代码单元,可以提供特定功能。
在Python中,如果将函数定义为class(类)的成员,那么函数会称之为:方法
方法和函数功能一样, 有传入参数,有返回值,只是方法的使用格式不同:
函数的使用:
列表的方法 - 总览
列表的特点
列表有如下特点:
可以容纳多个元素(上限为2**63-1、9223372036854775807个)
可以容纳不同类型的元素(混装)
数据是有序存储的(有下标序号)
允许重复数据存在
可以修改(增加或删除元素等)
列表的遍历 - while循环
既然数据容器可以存储多个元素,那么,就会有需求从容器内依次取出元素进行操作。
将容器内的元素依次取出进行处理的行为,称之为:遍历、迭代。
如何遍历列表的元素呢?
如何在循环中取出列表的元素呢?
循环条件如何控制?
定义一个变量表示下标,从0开始
循环条件为 下标值 < 列表的元素数量
列表的遍历 - for循环
除了while循环外,Python中还有另外一种循环形式:for循环。
对比while,for循环更加适合对列表等数据容器进行遍历。
语法:
每一次循环将列表中的元素取出,赋值到变量i,供操作
表示,从容器内,依次取出元素并赋值到临时变量上。
在每一次的循环中,我们可以对临时变量(元素)进行处理。
while循环和for循环的对比
while循环和for循环,都是循环语句,但细节不同:
在循环控制上:
while循环可以自定循环条件,并自行控制
for循环不可以自定循环条件,只可以一个个从容器内取出数据
在无限循环上:
while循环可以通过条件控制做到无限循环
for循环理论上不可以,因为被遍历的容器容量不是无限的
在使用场景上:
while循环适用于任何想要循环的场景
for循环适用于,遍历数据容器的场景或简单的固定次数循环场景
元组同列表一样,都是可以封装多个、不同类型的元素在内。
但最大的不同点在于:
元组一旦定义完成,就不可修改
定义元组
元组定义:定义元组使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型。
元组也支持嵌套:
注意:元组只有一个数据,这个数据后面要添加逗号
注意:元组由于不可修改的特性,所以其操作方法非常少。
元组的相关操作 - 注意事项
元组的遍历
同列表一样,元组也可以被遍历。
可以使用while循环和for循环遍历它
元组有如下特点:
可以容纳多个数据
可以容纳不同类型的数据(混装)
数据是有序存储的(下标索引)
允许重复数据存在
不可以修改(增加或删除元素等)
支持for循环
多数特性和list一致,不同点在于不可修改的特性。
再识字符串
尽管字符串看起来并不像:列表、元组那样,一看就是存放了许多数据的容器。
但不可否认的是,字符串同样也是数据容器的一员。
字符串是字符的容器,一个字符串可以存放任意数量的字符。
如,字符串:“itheima”
字符串的下标(索引)
和其它容器如:列表、元组一样,字符串也可以通过下标进行访问
从前向后,下标从0开始
从后向前,下标从-1开始
同元组一样,字符串是一个:无法修改的数据容器。
所以:
修改指定下标的字符 (如:字符串[0] = “a”)
移除特定下标的字符 (如:del 字符串[0]、字符串.remove()、字符串.pop()等)
追加字符等 (如:字符串.append())
均无法完成。如果必须要做,只能得到一个新的字符串,旧的字符串是无法修改
字符串常用操作汇总
字符串的遍历
同列表、元组一样,字符串也支持while循环和for循环进行遍历
字符串的特点
作为数据容器,字符串有如下特点:
只可以存储字符串
长度任意(取决于内存大小)
支持下标索引
允许重复字符串存在
不可以修改(增加或删除元素等)
支持for循环
基本和列表、元组相同
不同与列表和元组的在于:字符串容器可以容纳的类型是单一的,只能是字符串类型。
不同于列表,相同于元组的在于:字符串不可修改
序列
序列是指:内容连续、有序,可使用下标索引的一类数据容器
列表、元组、字符串,均可以可以视为序列。
如图,序列的典型特征就是:有序并可用下标索引,字符串、元组、列表均满足这个要求
序列的常用操作 - 切片
序列支持切片,即:列表、元组、字符串,均支持进行切片操作
切片:从一个序列中,取出一个子序列
语法:序列[起始下标:结束下标:步长]
表示从序列中,从指定位置开始,依次取出元素,到指定位置结束,得到一个新序列:
起始下标表示从何处开始,可以留空,留空视作从头开始
结束下标(不含)表示何处结束,可以留空,留空视作截取到结尾
步长表示,依次取元素的间隔
步长1表示,一个个取元素
步长2表示,每次跳过1个元素取
步长N表示,每次跳过N-1个元素取
步长为负数表示,反向取(注意,起始下标和结束下标也要反向标记)
注意,此操作不会影响序列本身,而是会得到一个新的序列(列表、元组、字符串)
为什么使用集合
我们目前接触到了列表、元组、字符串三个数据容器了。基本满足大多数的使用场景。
为何又需要学习新的集合类型呢?
通过特性来分析:
列表可修改、支持重复元素且有序
元组、字符串不可修改、支持重复元素且有序
存在一些局限在于:它们都支持重复元素。
如果场景需要对内容做去重处理,列表、元组、字符串就不方便了。
而集合,最主要的特点就是:不支持元素的重复(自带去重功能)、并且内容无序
集合的定义
基本语法:
和列表、元组、字符串等定义基本相同:
列表使用:[]
元组使用:()
字符串使用:“”
集合使用:{}
上图结果中可见:去重且无序
因为要对元素做去重处理,所以无法保证顺序和创建的时候一致
遍历集合元素
可以使用for循环进行变量
不可以使用while循环,因为不支持下标索引
集合常用功能总结
集合的特点
集合有如下特点:
可以容纳多个数据
可以容纳不同类型的数据(混装)
数据是无序存储的(不支持下标索引)
不允许重复数据存在
可以修改(增加或删除元素等)
支持for循环
Python中字典和生活中字典十分相像:
为什么使用字典?
字典的定义
字典的定义,同样使用{},不过存储的元素是一个个的:键值对,如下语法:
使用{}存储原始,每一个元素是一个键值对
每一个键值对包含Key和Value(用冒号分隔)
键值对之间使用逗号分隔
Key和Value可以是任意类型的数据(key不可为字典)
Key不可重复,重复会对原有数据覆盖
字典数据的获取
字典同集合一样,不可以使用下标索引
但是字典可以通过Key值来取得对应的Value
字典的嵌套
字典的Key和Value可以是任意数据类型(Key不可为字典)
那么,就表明,字典是可以嵌套的
代码:
优化一下可读性,可以写成:
嵌套字典的内容获取,如下所示:
字典的常用操作总结
字典的特点
字典有如下特点:
可以容纳多个数据
可以容纳不同类型的数据
每一份数据是KeyValue键值对
可以通过Key获取到Value,Key不可重复(重复会覆盖)
不支持下标索引
可以修改(增加或删除更新元素等)
支持for循环,不支持while循环
数据容器分类
数据容器可以从以下视角进行简单的分类:
是否支持下标索引
支持:列表、元组、字符串 - 序列类型
不支持:集合、字典 - 非序列类型
是否支持重复元素:
支持:列表、元组、字符串 - 序列类型
不支持:集合、字典 - 非序列类型
是否可以修改
支持:列表、集合、字典
不支持:元组、字符串
数据容器特点对比
基于各类数据容器的特点,它们的应用场景如下:
列表:一批数据,可修改、可重复的存储场景
元组:一批数据,不可修改、可重复的存储场景
字符串:一串字符串的存储场景
集合:一批数据,去重存储场景
字典:一批数据,可用Key检索Value的存储场景
数据容器的通用操作 - 遍历
数据容器尽管各自有各自的特点,但是它们也有通用的一些操作。
首先,在遍历上:
5类数据容器都支持for循环遍历
列表、元组、字符串支持while循环,集合、字典不支持(无法下标索引)
尽管遍历的形式各有不同,但是,它们都支持遍历操作。
容器通用功能总览
ASCII码表
在程序中,字符串所用的所有字符如:
大小写英文单词
数字
特殊符号(!、\、|、@、#、空格等)
都有其对应的ASCII码表值
每一个字符都能对应上一个:数字的码值
字符串进行比较就是基于数字的码值大小进行比较的。
字符串比较
字符串是按位比较,也就是一位位进行对比,只要有一位大,那么整体就大。