【Python】数据容器

一、数据容器入门
二、数据容器:list(列表)
三、list(列表)的遍历
四、数据容器:tuple(元组)
五、数据容器:str(字符串)
六、数据容器的切片
七、数据容器:set(集合)
八、数据容器:dict(字典、映射)
九、数据容器的通用操作、对比总结、字符串大小比较

一、数据容器入门

数据容器

Python中的数据容器:

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

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

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

  • 是否支持重复元素
  • 是否可以修改
  • 是否有序,等
    分为5类,分别是:
    列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)

总结

  1. 什么是数据容器?
    一种可以存储多个元素的Python数据类型
  2. Python有哪些数据容器?
    list(列表)、tuple(元组)、str(字符串)、set(集合)、dict(字典)
    它们各有特点,但都满足可容纳多个元素的特性。

二、数据容器:list(列表)

  1. 列表的定义
    列表的定义格式
  2. 列表的下标索引
    使用列表的下标索引从列表中取出元素
  3. 列表的常用操作
    列表的常用操作(方法)和特点

列表的定义

列表的定义方式:

总结

  1. 列表的定义语法
    [元素1, 元素2, 元素3, ...]
  2. 什么是元素?
    数据容器内的每一份数据,都称之为元素
  3. 元素的类型有限制吗?
    元素的数据类型没有任何限制,甚至元素也可以是列表,这样就定义了嵌套列表

列表的下标(索引)

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

嵌套列表的下标(索引)

总结

  1. 列表的下标索引是什么?
    列表的每一个元素,都有编号称之为下标索引
    从前向后的方向,编号从0开始递增
    从后向前的方向,编号从-1开始递减
  2. 如何通过下标索引取出对应位置的元素呢?
    列表[下标],即可取出
  3. 下标索引的注意事项:
    要注意下标索引的取值范围,超出范围无法取出元素,并且会报错

列表的常用操作(方法)

列表除了可以:

  • 定义
  • 使用下标索引获取值

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

  • 插入元素
  • 删除元素
  • 清空列表
  • 修改元素
  • 统计元素个数

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

列表的查询功能(方法)

列表的查询下标(索引)(查)

列表的通过下标索引修改元素值的功能(方法)(改)

列表的插入元素的功能 (增)


列表的删除元素的功能 (删)


count函数 统计某元素在列表内的数量功能

len函数 列表的查询元素个数功能

列表的方法 - 总览

列表的特点

经过上述对列表的学习,可以总结出列表有如下特点:

  • 可以容纳多个元素(上限为2**63-1、9223372036854775807个)
  • 可以容纳不同类型的元素(混装)
  • 数据是有序存储的(有下标序号)
  • 允许重复数据存在
  • 可以修改(增加或删除元素等)

三、list(列表)的遍历

  1. 使用while循环,遍历列表的元素
  2. 使用for循环,遍历列表的元素

列表的遍历 - while循环

列表的遍历 - for循环

while循环和for循环的对比

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

  • 在循环控制上:
    • while循环可以自定循环条件,并自行控制
    • for循环不可以自定循环条件,只可以一个个从容器内取出数据
  • 在无限循环上:
    • while循环可以通过条件控制做到无限循环
    • for循环理论上不可以,因为被遍历的容器容量不是无限的
  • 在使用场景上:
    • while循环适用于任何想要循环的场景
    • for循环适用于,遍历数据容器的场景或简单的固定次数循环场景

四、数据容器:tuple(元组)

  1. 元组的定义
  2. 元组的操作
  3. 元组的特点

为什么需要元组

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

所以,当我们需要在程序内封装数据,又不希望封装的数据被篡改,那么元组就非常合适了

定义元组

元组的相关操作

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

元组的遍历

元组的特点

总结出元组有如下特点:

  • 可以容纳多个数据
  • 可以容纳不同类型的数据(混装)
  • 数据是有序存储的(下标索引)
  • 允许重复数据存在
  • 不可以修改(增加或删除元素等)
  • 支持for循环

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

总结

  1. 元组的定义方式:
    (元素, 元素, 元素, ...)
  2. 元组的操作方法:
  3. 元组的注意事项:
    不可修改内容(可以修改内部list的内部元素)
  4. 元组的特点:
  • 和list基本相同(有序、任意数量元素、允许重复元素),唯一不同在于不可修改。
  • 支持for循环

五、数据容器:str(字符串)

字符串的常见操作

字符串的下标(索引)

字符串的常用操作






字符串常用操作汇总

字符串的遍历

字符串的特点

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

  • 只可以存储字符串
  • 长度任意(取决于内存大小)
  • 支持下标索引
  • 允许重复字符串存在
  • 不可以修改(增加或删除元素等)
  • 支持for循环

基本和列表、元组相同

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

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

六、数据容器的切片

  1. 什么是序列
  2. 序列的切片操作

序列

序列是指:内容连续有序可使用下标索引 的一类数据容器
列表、元组、字符串,均可以可以视为序列。

序列的常用操作 - 切片

序列 支持切片,即:列表、元组、字符串,均支持进行切片操作
切片:从一个序列中,取出一个子序列

语法:序列[起始下标:结束下标:步长]
表示从序列中,从指定位置开始,依次取出元素,到指定位置结束,得到一个新序列

  • 起始下标表示从何处开始,可以留空,留空视作从头开始
  • 结束下标(不含)表示何处结束,可以留空,留空视作截取到结尾
  • 步长 表示,依次取元素的间隔
    • 步长1表示,一个个取元素
    • 步长2表示,每次跳过1个元素取
    • 步长N表示,每次跳过N-1个元素取
    • 步长为负数表示,反向取(注意,起始下标和结束下标也要反向标记)

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

序列的切片演示


总结

  1. 什么是序列?
    内容连续、有序,支持下标索引 的一类数据容器
  2. 哪些数据容器可以视为序列?
    列表、元组、字符串
  3. 序列如何做切片
    序列[起始:结束:步长]
  • 起始可以省略,省略从头开始
  • 结束可以省略,省略到尾结束
  • 步长可以省略,省略步长为1(可以为负数,表示倒序执行)

七、数据容器:set(集合)

  • 集合内不允许重复元素(去重)
  • 集合内元素是无序的(不支持下标索引)
  1. 集合的定义格式
  2. 集合的特点
  3. 集合的常见操作

集合的定义

集合的常用操作 - 修改





集合的常用操作 - 集合长度

集合的常用操作 - for循环遍历

集合常用功能总结

集合的特点

经过上述对集合的学习,可以总结出集合有如下特点:

  • 可以容纳多个数据
  • 可以容纳不同类型的数据(混装)
  • 数据是无序存储的(不支持下标索引)
  • 不允许重复数据存在
  • 可以修改(增加或删除元素等)
  • 支持for循环

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

  1. 字典的定义
    字典的定义格式
  2. 字典的常用操作
    字典的特点

字典的定义

字典数据的获取

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

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

字典的嵌套

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

字典的注意事项

  1. 键值对的Key和Value可以是任意类型(Key不可为字典)
  2. 字典内Key不允许重复,重复添加等同于覆盖原有数据
  3. 字典不可用下标索引,而是通过Key检索Value

字典的常用操作




字典的常用操作总结

字典的特点

经过上述对字典的学习,可以总结出字典有如下特点:

  • 可以容纳多个数据
  • 可以容纳不同类型的数据
  • 每一份数据是KeyValue键值对
  • 可以通过Key获取到Value,Key不可重复(重复会覆盖)
  • 不支持下标索引
  • 可以修改(增加或删除更新元素等)
  • 支持for循环,不支持while循环

九、数据容器的通用操作、对比总结、字符串大小比较

1、数据容器对比总结

数据容器分类区别

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

  • 是否支持下标索引
    • 支持:列表、元组、字符串 - 序列类型
    • 不支持:集合、字典 - 非序列类型
  • 是否支持重复元素
    • 支持:列表、元组、字符串 - 序列类型
    • 不支持:集合、字典 - 非序列类型
  • 是否可以修改
    • 支持:列表、集合、字典
    • 不支持:元组、字符串

数据容器特点对比

总结

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

  • 列表:一批数据,可修改、可重复的存储场景
  • 元组:一批数据,不可修改、可重复的存储场景
  • 字符串:一串字符串的存储场景
  • 集合:一批数据,去重存储场景
  • 字典:一批数据,可用Key检索Value的存储场景

2、数据容器的通用操作

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

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

首先,在遍历上:

  • 5类数据容器都支持for循环遍历
  • 列表、元组、字符串支持while循环,集合、字典不支持(无法下标索引)

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

数据容器的通用统计功能

容器的通用转换功能

容器通用排序功能

容器通用功能总览

3、字符串大小比较

ASCII码表

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

  • 大小写英文单词
  • 数字
  • 特殊符号(!、\、|、@、#、空格等)

都有其对应的ASCII码表值

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

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

字符串比较

总结

  1. 字符串如何比较
    从头到尾,一位位进行比较,其中一位大,后面就无需比较了。
  2. 单个字符之间如何确定大小?
    通过ASCII码表,确定字符对应的码值数字来确定大小
相关推荐
阿洵Rain11 小时前
【C++】哈希
数据结构·c++·算法·list·哈希算法
小柯J桑_13 小时前
C++:set详解
c++·set
黎明晓月16 小时前
Java之字符串分割转换List
java·windows·list
slp_16 小时前
java list使用基本操作
java·开发语言·list
大黄瓜de冬天1 天前
list集合常见去重方式以及效率对比
java·spring boot·list
Trouvaille ~1 天前
【C++篇】跨越有限与无限的边界:STL之set容器中的自我秩序与无限可能
开发语言·数据结构·c++·容器·stl·set·红黑树
南城花随雪。2 天前
哈希表(Hash Table)、跳表(Skip List) 和 有序字典(Ordered Dictionary) 的详细介绍
list·哈希算法·散列表
算法与编程之美2 天前
list与iterator的之间的区别,如何用斐波那契数列探索yield
数据结构·list
天狼12223 天前
java8 list map 聚合求和
list·map·q求和
初次见面我叫泰隆4 天前
C++STL——list
开发语言·c++·list