news 2026/8/10 12:05:40

Python数据容器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python数据容器

1.数据容器定义

一种可以容纳多份数据的数据类型(容器),容纳的每一份数据称为 1 个元素,每个元素都可以是任意类型的数据

数据容器主要有以下5种:列表,字符串,元组,集合,字典

序列类型:容器中的元素按特定顺序排列的,可通过索引访问的容器类型称之为序列

2.列表 list

2.1 列表定义

列表是数据容器的一类,一次性可以存储多个数据(元素)

定义:列表名称 = [ 元素1 ,元素2 , 元素3 , 元素4 , ... ]

特点:

  • 可以存储不同类型的元素
  • 元素有序,可以重复,元素可以修改
  • 列表是序列
  • 使用 [ ] 定义

注意:

  • 正索引:从前往后,下标从 0 开始
  • 负索引:从后往前,下标从 -1 开始

列表相关基础操作:

2.2 列表切片

切片:指对操作的数据截取其中一部分的操作。序列都支持切片操作

语法:序列数据 [开始索引 : 结束索引 : 步长]

  • 左闭右开,不包含结束索引位置对应元素(开始索引未指定默认为0;结束索引未指定默认为列表长度;步长未指定默认为1)
  • 索引采用正向,反向索引都可以
  • 步长是选取间隔,默认步长为1
  • start ---> end 方向要与步长方向一致

2.3 列表的常见方法

方法调用格式:对象.方法名(数据)
pop():返回指定删除的元素,因此可以 a = s.pop(2) ,用 a 记录删除的元素;pop()默认删除最后一个

Python中用于数据统计常用语句补充内容:

  • sum(list):对列表内所有元素进行求和并返回其值
  • min(list):获取列表内所有元素的最小值并返回
  • max(list):获取列表内所有元素的最大值并返回
  • len(list):返回列表中元素个数

注意:以上语句皆未对列表进行操作,不会改变列表

2.4 列表推导式

列表推导式就是按照一定的规则快速生成一个列表的方法

  • 格式1:列表名称 = [ 要插入列表的数据 for i in 列表]
  • 格式2:列表名称 = [ 要插入列表的数据 for i in 列表 if 条件]

对于格式2,只有 if 后面的条件成立,才会插入列表,否则不会插入

3.字符串 str

3.1 字符串定义

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

特点:

  • 不可变性(定义后无法修改
  • 有序性
  • 可迭代性:可以直接用 for 循环遍历,迭代的单位是单个字符
  • 字符串是序列
  • 使用引号" "定义

字符串中的每一个符号元素都有其对应的索引,通过元素对应的索引,就可以获取到对应的元素

3.2 字符串切片

2.3 字符串的常见方法

由于字符串具有不可变性,以上所有的字符串方法并不会改变所操作的字符串本身,而是会返回相应的需求

4.元组 tuple

4.1 元组的定义

元组是不可变序列,类似于列表,但创建后不能修改

元组的特点:

  • 可以存储不同类型的元素
  • 元素可以重复,有序,不可以修改(与列表的最大不同
  • 支持索引访问,切片
  • 元组是序列
  • 使用 ( ) 定义

元组的两个查询方法:

  • count():统计某元素在元组中出现的次数
  • index():查找某个元素在元组中的索引位置(第一次出现的位置)

如果定义单元素元组,需要在单个元素之后加上,比如(100,)

4.2 元组的组包与解包

组包:将多个值合并到一个容器(元组,列表)中

解包:将容器(元组,列表)解开成独立元素,分别赋给多个变量

说明:在元组解包时,* 代表收集剩余的所有元素,允许我们处理不确定数量的元素生成列表,以便于我们可以进一步的进行处理

例如:现有两个变量 a,b ,交换两个变量的值:

该语句的本质是右侧完成了组包,左侧完成了解包

5.集合 set

集合的适用场景:存储需要去重的元素

5.1 集合的定义

集合是一种无序的,不可重复,可修改的数据容器,其定义如下:

注意:

  • 集合使用 { } 定义,但是空集合的定义不可以用 { } ,{ } 表示的是空字典;由于集合是无序的,因此集合不支持索引访问
  • 集合不是序列

5.2 集合的操作

  • 添加
  • 删除
  • 交,并,差集

交集 intersection( ):可以通过运算符 &进行操作

差集 difference( ):可以通过运算符 -进行操作

并集 union( ):可以通过运算符 |进行操作

集合推导式:用于快速构建集合,语法:{要往集合中添加的数据 for s in set if 条件}

5.3 小结

6.字典 dict

6.1 字典的定义

字典 dict 里面存储的是键值对(key :value)类型的数据,每一个键(key)都对应一个值(value)可以根据键(key)找到对应的值(value)

特点:

  • 键值对(key :value)存储
  • 键(key)不能重复 (如果重复,后面的值会覆盖前面的值)
  • 可修改
  • 字典不是序列
  • 使用 { } 定义

定义如下:

注意:字典(dict)中的value 可以是任意类型的数据,而key 不能为可变类型(如:不能为列表list,集合set,字典dict)

字典的注意事项:

  • value 可以是任意类型,而 key 必须是不可变类型
  • 字典内的 key 不允许重复 , 如果重复定义 , 后面的覆盖前面的
  • 字典是没有索引下标的,不能根据索引获取值,只可以根据 key 获取 value

6.2 字典的操作

6.3 小结

7.数据容器总结与对比

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/10 12:05:12

VERTFuzz:用 Transformer 重塑复杂文件解析器模糊测试

“ 针对复杂文件格式(如 PDF / ELF / XML / TIFF)的漏洞挖掘,一直是模糊测试领域的“硬骨头”。传统 Fuzzer(如 AFL / AFL)普遍存在三大问题:难以生成符合格式规范的输入,大量测试样本被解析器直…

作者头像 李华
网站建设 2026/8/10 12:02:41

5-12岁儿童打字启蒙软件选型与训练指南

1. 儿童打字启蒙软件选型指南作为一名从事教育科技行业12年的从业者,我见证过上百款儿童教育软件的兴衰。今天要分享的是经过实测验证的8款真正适合5-12岁儿童的打字训练工具。这些软件的共同特点是:界面友好度比同类产品高47%,平均学习曲线缩…

作者头像 李华
网站建设 2026/8/10 12:02:09

Unity游戏资源逆向解析:从APK提取模型、纹理与音频的完整指南

1. 项目概述:为什么我们需要从APK中提取Unity资源? 在游戏开发、技术研究或者资产迁移的日常工作中,我们经常会遇到一个棘手的问题:手头只有一个已经打包好的Unity游戏APK文件,但我们需要里面的某个3D模型、一段背景音…

作者头像 李华
网站建设 2026/8/10 12:00:39

Swift闭包详解:从基础到高级应用

1. 为什么Swift闭包如此重要?闭包是Swift语言中最强大的特性之一,也是让许多初学者感到困惑的概念。我第一次接触Swift闭包时,完全不明白为什么需要这种看起来复杂的语法。直到在实际项目中遇到一个排序需求,才真正体会到闭包的威…

作者头像 李华
网站建设 2026/8/10 11:57:39

Python实现本地化文本二维码生成器:从原理到工程实践

1. 这篇文章真正要解决的问题 你是不是也遇到过这样的场景?需要把一个网址、一段Wi-Fi密码、或者几句重要的配置信息,快速分享给同事或用户。直接发一长串字符,对方容易输错;发个文件,又显得太重。这时候,一…

作者头像 李华
网站建设 2026/8/10 11:57:04

Unity GPU物理模拟:Verlet积分与Compute Shader实战解析

1. 项目概述:当物理模拟遇上GPU计算 如果你在Unity里做过布料、绳索或者软体这类需要柔体物理的效果,大概率被Unity自带的Cloth组件或者一堆复杂的关节(Joint)和刚体(Rigidbody)组合折磨过。性能开销大、参…

作者头像 李华