【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码表,确定字符对应的码值数字来确定大小
相关推荐
lincats2 天前
一步一步学习使用LiveBindings(11) 绑定到自定义外观的ListBox
list·delphi·delphi 12.3·firedac·firemonkey·tlistview
程序员黄同学2 天前
Python 的列表 list 和元组 tuple 有啥本质区别?啥时候用谁更合适?
windows·python·list
YXXY3135 天前
list类
list
Y4090016 天前
List、ArrayList 与顺序表
数据结构·笔记·list
jllllyuz7 天前
C++ 中 initializer_list&& 类型推导
开发语言·c++·list
czhc11400756637 天前
linux81 shell通配符:[list],‘‘ ``““
数据结构·chrome·list
Jinkxs8 天前
基础14-Java集合框架:掌握List、Set和Map的使用
java·list
呆瑜nuage9 天前
list的使用和模拟
c++·list
一只余弦函数11 天前
《C++》STL--list容器详解
开发语言·c++·list
死也不注释12 天前
【在Unity游戏开发中Dictionary、List介绍】
数据结构·游戏·unity·游戏引擎·list·游戏程序