Python基础——第六章:Python数据容器

前言

本文是根据黑马程序员Python教程所作之笔记,目的是为了方便我本人以及广大同学们查漏补缺。
不想做笔记直接来我的频道。当然啦,自己的笔记才是最好的哦!
PS:感谢黑马程序员!
教程链接:黑马程序员最新Python教程,8天python从入门到精通,学python看这套就够了

Python基础模块总目录

第一章:你好Python
第二章:Python基础语法
第三章:Python判断语句
第四章:Python循环语句
第五章:Python函数
第六章:Python数据容器
第七章:Python函数进阶
第八章:Python文件操作
第九章:Python异常、模块与包
基础综合案例之数据可视化

第六章:Python数据容器

数据容器入门

学习数据容器,就是为了批量存储或批量使用多份数据

数据容器

Python中的数据容器:

一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素

每一个元素,可以是任意类型的数据,如字符串、数字、布尔等。

数据容器根据特点的不同,如:

  • 是否支持重复元素

  • 是否可以修改

  • 是否有序,等

分为5类,分别是:列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)

它们各有特点,但都满足可容纳多个元素的特性。

数据容器:list(列表)

列表的定义

列表的定义

基本语法:

列表内的每一个数据,称之为元素

  • 以 [ ] 作为标识

  • 列表内每一个元素之间用“,”逗号隔开

列表的定义方式:

使用[]的方式定义列表

注意:列表可以一次存储多个数据,且可以为不同的数据类型,支持嵌套

列表的下标索引

列表的下标(索引)

从列表中取出特定位置的数据可以使用:下标索引

如图,列表中的每一个元素,都有其位置下标索引,从前向后的方向,从0开始,依次递增

我们只需要按照下标索引,即可取得对应位置的元素。

列表的下标(索引) - 反向

或者,可以反向索引,也就是从后向前:从-1开始,依次递减(-1、-2、-3…)

如图,从后向前,下标索引为:-1、-2、-3,依次递减。

嵌套列表的下标(索引)

如果列表是嵌套的列表,同样支持下标索引

如图,下标就有2个层级了。

列表的常用操作

列表的常用操作(方法)

列表除了可以:

  • 定义

  • 使用下标索引获取值

以外,列表也提供了一系列功能:

  • 插入元素

  • 删除元素

  • 清空列表

  • 修改元素

  • 统计元素个数

等等功能,这些功能我们都称之为:列表的方法

列表的查询功能(方法)

回忆:函数是一个封装的代码单元,可以提供特定功能。

在Python中,如果将函数定义为class(类)的成员,那么函数会称之为:方法

方法和函数功能一样, 有传入参数,有返回值,只是方法的使用格式不同:

函数的使用:

方法的使用:

列表的方法 - 总览

列表的特点

列表有如下特点:

  • 可以容纳多个元素(上限为2**63-1、9223372036854775807个)

  • 可以容纳不同类型的元素(混装)

  • 数据是有序存储的(有下标序号)

  • 允许重复数据存在

  • 可以修改(增加或删除元素等)

list(列表)的遍历

列表的遍历 - while循环

既然数据容器可以存储多个元素,那么,就会有需求从容器内依次取出元素进行操作。

将容器内的元素依次取出进行处理的行为,称之为:遍历、迭代

如何遍历列表的元素呢?

  • 可以使用while循环

如何在循环中取出列表的元素呢?

  • 使用列表[下标]的方式取出

循环条件如何控制?

  • 定义一个变量表示下标,从0开始

  • 循环条件为 下标值 < 列表的元素数量

列表的遍历 - for循环

除了while循环外,Python中还有另外一种循环形式:for循环。

对比while,for循环更加适合对列表等数据容器进行遍历。

语法:

每一次循环将列表中的元素取出,赋值到变量i,供操作

表示,从容器内,依次取出元素并赋值到临时变量上。

在每一次的循环中,我们可以对临时变量(元素)进行处理。

while循环和for循环的对比

while循环和for循环,都是循环语句,但细节不同:

  • 在循环控制上:

    • while循环可以自定循环条件,并自行控制

    • for循环不可以自定循环条件,只可以一个个从容器内取出数据

  • 在无限循环上:

    • while循环可以通过条件控制做到无限循环

    • for循环理论上不可以,因为被遍历的容器容量不是无限的

  • 在使用场景上:

    • while循环适用于任何想要循环的场景

    • for循环适用于,遍历数据容器的场景或简单的固定次数循环场景

数据容器:tuple(元组)

元组的定义

元组同列表一样,都是可以封装多个、不同类型的元素在内。

但最大的不同点在于:

元组一旦定义完成,就不可修改

定义元组

元组定义:定义元组使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型

元组也支持嵌套:

注意:元组只有一个数据,这个数据后面要添加逗号

元组的相关操作

注意:元组由于不可修改的特性,所以其操作方法非常少。

元组的相关操作 - 注意事项

  • 不可以修改元组的内容,否则会直接报错

  • 可以修改元组内的list的内容(修改元素、增加、删除、反转等)

  • 不可以替换list为其它list或其它类型

元组的遍历

同列表一样,元组也可以被遍历。

可以使用while循环和for循环遍历它

元组的特点

元组有如下特点:

  • 可以容纳多个数据

  • 可以容纳不同类型的数据(混装)

  • 数据是有序存储的(下标索引)

  • 允许重复数据存在

  • 不可以修改(增加或删除元素等)

  • 支持for循环

多数特性和list一致,不同点在于不可修改的特性。

数据容器:str(字符串)

再识字符串

尽管字符串看起来并不像:列表、元组那样,一看就是存放了许多数据的容器。

但不可否认的是,字符串同样也是数据容器的一员。

字符串是字符的容器,一个字符串可以存放任意数量的字符。

如,字符串:“itheima”

字符串的下标(索引)

和其它容器如:列表、元组一样,字符串也可以通过下标进行访问

  • 从前向后,下标从0开始

  • 从后向前,下标从-1开始

同元组一样,字符串是一个:无法修改的数据容器。

所以:

  • 修改指定下标的字符 (如:字符串[0] = “a”)

  • 移除特定下标的字符 (如:del 字符串[0]、字符串.remove()、字符串.pop()等)

  • 追加字符等 (如:字符串.append())

均无法完成。如果必须要做,只能得到一个新的字符串,旧的字符串是无法修改

字符串常用操作汇总

字符串的遍历

同列表、元组一样,字符串也支持while循环和for循环进行遍历

字符串的特点

作为数据容器,字符串有如下特点:

  • 只可以存储字符串

  • 长度任意(取决于内存大小)

  • 支持下标索引

  • 允许重复字符串存在

  • 不可以修改(增加或删除元素等)

  • 支持for循环

基本和列表、元组相同

不同与列表和元组的在于:字符串容器可以容纳的类型是单一的,只能是字符串类型。

不同于列表,相同于元组的在于:字符串不可修改

数据容器(序列)的切片

序列

序列是指:内容连续、有序,可使用下标索引的一类数据容器

列表、元组、字符串,均可以可以视为序列。

如图,序列的典型特征就是:有序并可用下标索引,字符串、元组、列表均满足这个要求

序列的常用操作 - 切片

序列支持切片,即:列表、元组、字符串,均支持进行切片操作

切片:从一个序列中,取出一个子序列

语法:序列[起始下标:结束下标:步长]

表示从序列中,从指定位置开始,依次取出元素,到指定位置结束,得到一个新序列:

  • 起始下标表示从何处开始,可以留空,留空视作从头开始

  • 结束下标(不含)表示何处结束,可以留空,留空视作截取到结尾

  • 步长表示,依次取元素的间隔

    • 步长1表示,一个个取元素

    • 步长2表示,每次跳过1个元素取

    • 步长N表示,每次跳过N-1个元素取

    • 步长为负数表示,反向取(注意,起始下标和结束下标也要反向标记)

注意,此操作不会影响序列本身,而是会得到一个新的序列(列表、元组、字符串)

数据容器:set(集合)

为什么使用集合

我们目前接触到了列表、元组、字符串三个数据容器了。基本满足大多数的使用场景。

为何又需要学习新的集合类型呢?

通过特性来分析:

  • 列表可修改、支持重复元素且有序

  • 元组、字符串不可修改、支持重复元素且有序

存在一些局限在于:它们都支持重复元素。

如果场景需要对内容做去重处理,列表、元组、字符串就不方便了。

而集合,最主要的特点就是:不支持元素的重复(自带去重功能)、并且内容无序

集合的定义

基本语法:

和列表、元组、字符串等定义基本相同:

  • 列表使用:[]

  • 元组使用:()

  • 字符串使用:“”

  • 集合使用:{}

上图结果中可见:去重且无序

因为要对元素做去重处理,所以无法保证顺序和创建的时候一致

遍历集合元素

  • 可以使用for循环进行变量

  • 不可以使用while循环,因为不支持下标索引

集合常用功能总结

集合的特点

集合有如下特点:

  • 可以容纳多个数据

  • 可以容纳不同类型的数据(混装)

  • 数据是无序存储的(不支持下标索引)

  • 不允许重复数据存在

  • 可以修改(增加或删除元素等)

  • 支持for循环

数据容器:dict(字典、映射)

字典的定义

Python中字典和生活中字典十分相像:

为什么使用字典?

  • 因为可以使用字典,实现用key取出Value的操作

字典的定义

字典的定义,同样使用{},不过存储的元素是一个个的:键值对,如下语法:

  • 使用{}存储原始,每一个元素是一个键值对

  • 每一个键值对包含Key和Value(用冒号分隔)

  • 键值对之间使用逗号分隔

  • Key和Value可以是任意类型的数据(key不可为字典)

  • Key不可重复,重复会对原有数据覆盖

字典数据的获取

字典同集合一样,不可以使用下标索引

但是字典可以通过Key值来取得对应的Value

字典的嵌套

字典的Key和Value可以是任意数据类型(Key不可为字典)

那么,就表明,字典是可以嵌套的

代码:

优化一下可读性,可以写成:

嵌套字典的内容获取,如下所示:

字典的常用操作

字典的常用操作总结

字典的特点

字典有如下特点:

  • 可以容纳多个数据

  • 可以容纳不同类型的数据

  • 每一份数据是KeyValue键值对

  • 可以通过Key获取到Value,Key不可重复(重复会覆盖)

  • 不支持下标索引

  • 可以修改(增加或删除更新元素等)

  • 支持for循环,不支持while循环

拓展:数据容器对比总结

数据容器分类

数据容器可以从以下视角进行简单的分类:

  • 是否支持下标索引

    • 支持:列表、元组、字符串 - 序列类型

    • 不支持:集合、字典 - 非序列类型

  • 是否支持重复元素:

    • 支持:列表、元组、字符串 - 序列类型

    • 不支持:集合、字典 - 非序列类型

  • 是否可以修改

    • 支持:列表、集合、字典

    • 不支持:元组、字符串

数据容器特点对比

基于各类数据容器的特点,它们的应用场景如下:

  • 列表:一批数据,可修改、可重复的存储场景

  • 元组:一批数据,不可修改、可重复的存储场景

  • 字符串:一串字符串的存储场景

  • 集合:一批数据,去重存储场景

  • 字典:一批数据,可用Key检索Value的存储场景

数据容器的通用操作

数据容器的通用操作 - 遍历

数据容器尽管各自有各自的特点,但是它们也有通用的一些操作。

首先,在遍历上:

  • 5类数据容器都支持for循环遍历

  • 列表、元组、字符串支持while循环,集合、字典不支持(无法下标索引)

尽管遍历的形式各有不同,但是,它们都支持遍历操作。

容器通用功能总览

拓展:字符串大小比较

ASCII码表

在程序中,字符串所用的所有字符如:

  • 大小写英文单词

  • 数字

  • 特殊符号(!、\、|、@、#、空格等)

都有其对应的ASCII码表值

每一个字符都能对应上一个:数字的码值

字符串进行比较就是基于数字的码值大小进行比较的。

字符串比较

字符串是按位比较,也就是一位位进行对比,只要有一位大,那么整体就大。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值