Python学习笔记--数据容器

news2025/3/1 0:19:49

(一) 数据容器入门


1. 数据容器:一种可以容纳多份数据的数据类型,容纳的每一份数据称之为一个元素。每一个元素,可以是任意类型的数据,如字符串、数字、布尔等。

2.. 种类:list(列表)、tuple(元组)、str(字符串)、set(集合)、dict(字典)

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


1. 定义


(1) 基本语法:

# 字面量

[元素1 ,元素2 ,元素3,……]

# 定义变量

变量名称 = [元素1 ,元素2 ,元素3,……]

# 定义空列表

变量名称 = []

变量名称 = list()

(2) 元素:列表中的每个数据

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

2. 列表的下标索引


(1) 类型:正向:从前向后,从0开始,依次递增

                        反向:从后向前,从-1开始,依次递减

(2) 使用:

列表[下标]

 下标超出范围,则无法取出元素,并且会报错

3. 列表的常用操作(方法)


* 函数:封装的代码单元,可提供特定功能。

  如将函数定义为class(类)的成员,则称函数为方法。

编号关键字使用方法作用
1index列表.index(元素)查找指定元素在列表中的下标,找不到则报错ValueError
2lenlen(列表)统计容器中有多少元素
3count列表.count(元素)统计此元素在列表中出现的次数
4deldel 列表[下标]删除列表指定的下标元素
5pop列表.pop[下标]删除列表指定的下标元素
6remove列表.remove(元素)从前向后,删除此元素的第一个匹配项
7append列表.append(元素)向列表中追加一个元素
8extend列表.extend(容器)将数据容器中的内容依次取出,追加到列表尾部
9insert列表.insert(下标,元素)在指定下标处,插入指定的元素
10clear

列表.clear()

清空列表
11.sortlist.sort()对列表中的元素进行排序。
12.reverselist.reverse()倒排列表中的元素。

4. 列表的特点

  • 可容纳多个元素
  • 可容纳不同类型的元素
  • 数据是有序存储的
  • 允许重复数据存在
  • 可进行增删查改.
age = [21, 25, 21, 23, 22, 20]

age.append(31)
print(age)

age.extend([29, 33, 30])
print(age)

x = age[0]
y = age[-1]

print(x, y)

a = age.index(31)
print(a)

练习2:

#
a = [66.25, 333, 333, 1, 1234.5]
print(a.count(333), a.count(66.25), a.count('x'))#统计此元素在列表中出现的次数
#
a.insert(2, -1)#在指定下标处,插入指定的元素
a.append(333)#向列表中追加一个元素
print(a)
#
a.index(333)#返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误。
print(a.index(333))
#
a.remove(333)#从前向后,删除此元素的第一个匹配项
print(a)
#
a.reverse()	#倒排列表中的元素。
print(a)
#
a.sort()#对列表中的元素进行排序。
print(a)

 

(三) list(列表)的遍历

遍历:将容器内的元素依次取出,并处理

1.  使用while遍历

     可以指定循环条件,自行控制
     可以通过条件控制做到无限循环
     适用于任何想要循环的场景


2. 使用for遍历


     不可以指定循环条件,只可以一个个从容器内取出数据
     理论上不可以无限循环,因为被遍历的容器容量不是无限的
     适用于遍历数据容器的场景或简单的固定次数循环场景
练习:

L = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
l1 = list()
l2 = list()
i = 0

# 取出偶数
while i < len(L):
    if L[i] % 2 == 0:
        l1 . append(L[i])
        i = i + 1
    else:
        i = i + 1
print(f"通过while循环,从列表:{L},中取出偶数,组成新列表{l1}")


for j in L:
    if j % 2 == 0:
        l2 . append(j)
print(f"通过for循环,从列表:{L},中取出偶数,组成新列表{l2}")

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

* 元组一旦定义,不可进行修改

1. 元组的定义


(1) 基本语法:

# 字面量

(元素1 ,元素2 ,元素3,……)

# 定义变量

变量名称 =(元素1 ,元素2 ,元素3,……)

# 定义空列表

变量名称 = ()

变量名称 =tuple()

 元组即使只含有一个数据,这个数据后也要添加,也可进行嵌套

2. 元组的操作(方法) 
 

编号关键字使用方法作用
1indexindex()查找指定数据在元组中的下标,找不到则报错
2lenlen(元组)统计元组内有多少元素
3countcount()

统计某个数据在元组中出现的次数

! 不可修改元组内容,否则直接报错

! 可修改元组内list的内容

! 不可以替换元组内list为其他list或其他类型

3. 元组的特点

  • 可容纳多个元素
  • 可容纳不同类型的元素
  • 数据是有序存储的
  • 允许重复数据存在
  • 可进行增删查改
  • 可进行循环
  • 不可修改

练习:

T = ('周杰伦', 11, ['football', 'music'])

a = T.index(11)
n = T[0]
print(a,n)

del T[2][0]
T[2].append('coding')

print(T)

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


1. 字符串


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

2. 字符串的下标(索引)


从前向后,下标从0开始
从后向前,下标从-1开始
! 字符串是一个无法修改的数据容器

! 如果要修改,则会得到一个新的字符串,旧的字符串是无法修改的

3. 字符串的常用操作

编号关键字使用方法作用
1字符串[下标]根据下标索引取出特定位置字符
2index字符串.index(字符串)查找给定字符的第一个匹配项的下标
3replace字符串.replace(字符串1,字符串2)

将字符串内的全部字符串1,替换为字符串2

!不会改变原字符串,而是得到一个新的字符串

4split字符串.split(字符串)

按照给定字符串,对字符串进行分割

!不会改变原字符串,而是得到一个新的列表

5strip

字符串.strip()

字符串.strip(字符串)

移除首尾的空格和换行符或指定字符串
6

count

字符串.count(字符串)统计字符串内某字符串的出现次数
7lenlen(字符串)统计字符串的字符个数

4. 字符串的特点

  • 只可以存储字符串
  • 长度任意
  • 支持下标索引
  • 允许重复的字符串出现
  • 不可以修改
  • 支持循环

练习:

S = "itheima itcast boxuegu"

n = S.count("it")
print(f"字符串{S}中有{n}个it字符")

S1 = S.replace(" ", "|")
print(f"字符串{S},被替换空格后,结果{S1}")

L = S1.split("|")
print(f"字符串{S},按照“|”分割后,得到{L}")

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


1. 集合的基本语法


# 定义集合字面量

(元素,元素,……,元素)

# 定义集合变量

变量名称 = {元素,元素,……,元素}

# 定义空集合

变量名称 = set()

! 去重且无序,无法保证顺序与创建的时候一致

! 不支持:下标索引访问,因此不支持while循环

补充:

定义:

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

元组()    不可修改、支持重复元素且有序

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

集合{}         可修改、不支持重复元素、无序

2. 集合的常用功能
 

编号关键字使用方法作用
1add集合.add(元素)集合内添加一个元素
2remove集合.remove(元素)移除集合内指定的元素
3pop集合.pop()从集合中随机取出一个元素
4clear集合.clear()将集合清空
5difference集合1.difference(集合2)

得到一个新集合,内含2个集合的差集

原有的2个集合内容不变

6update集合1.difference_update(集合2)

在集合1中,删除集合2中存在的元素

集合1被修改,集合2不变

7union集合1.union(集合2)得到1个新集合,内含2个集合的全部元素原有的2个集合内容不变
8lenlen(集合)得到一个整数,记录了集合的元素数量

 

3. 集合的特点

  • 可以容纳多个数据
  • 可以容纳不同类型的数据(混装)
  • 数据是无序存储的(不支持下标存储)
  • 不允许重复数据存在
  • 可以修改
  • 支持for循环,不支持while循环

练习:

my_list = ['黑马程序员','传智播客','黑马程序员','传智播客','itheima','itcast','itheima','itcast','best']
 
S = set()
for i in my_list:
    S.add(i)
 
print(f"有列表:{my_list}")
print(f"存入集合后结果:{S}")

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


1. 字典的基本语法


# 定义字典字面量

{key:value,key:value,……,key:value}

# 定义字面变量

my_dict = {key:value,key:value,……,key:value}

# 定义空字典

my_dict = {}

my_dict = dict{}

! 每个元素均为键值对,key和value可以为任意类型数据(key不可为字典)

! key不可重复,重复会对原有数据覆盖

! 不可以使用下标索引,但可通过key值取得对应的value,不可使用while循环

! 字典可嵌套

2. 字典的常用操作
 

编号关键字使用方法作用
1字典[Key]获取指定Key对应的Value值
2字典[Key] = Value添加或更新键值对
3pop字典.pop(Key)取出Key对应的Value并在字典内删除此Key的键值对
4clear字典.clear()清空字典
5keys字典.keys()获取字典的全部Key,可用于for循环遍历字典
6lenlen(字典)计算字典内的元素数量

 

3. 字典的特点

  • 可以容纳多个数据
  • 可以容纳不同类型的数据(混装)
  • 不支持下标索引
  • 可以修改
  • 支持for循环,不支持while循环

练习:

D = {
    "王力鸿":{"部门":"科技部","工资":3000,"级别":1},
    "周婕纶":{"部门":"市场部","工资":5000,"级别":2},
    "凌俊杰":{"部门":"市场部","工资":7000,"级别":3},
    "张雪有":{"部门":"科技部","工资":4000,"级别":1},
    "牛德华":{"部门":"市场部","工资":6000,"级别":2}
}
keys = D.keys()

print(D)

for key in keys:
    if D[key]["级别"] == 1:
        D[key]["工资"] = D[key]["工资"] + 1000

print(D)

 扩展:数据容器的对比总结

列表元组字符串集合字典
元素数量支持多个支持多个支持多个支持多个支持多个
元素类型任意任意仅字符任意

Key:除字典外任意类型

Value:任意类型

下标索引××
重复元素××
可修改性××
数据有序×××
使用场景可修改、可重复的一批数据的记录不可修改、可重复的一批数据的记录一串字符的记录不可重复的数据记录以Key检索Value的数据记录

(九) 数据容器的通用操作

序号功能描述
1for循环遍历容器(字典是遍历key)
2max()容器内最大元素
3min()容器内最小元素
4len()容器内元素个数
5list()转换为列表
6tuple()转换为元组
7str()转换为字符串
8set()转换为集合
9sorted(序列,[reverse = True])

排序,得到一个排好序的列表

reverse = True表示“降序”

(十)综合案例

练习题1:

# 幸运数字6:
# 1. 输入任意数字,如数字8,生成nums列表,元素值为1-8,
#  2. 从中选取幸运数字(能被6整除)移动到新列表lucky
# 3. 打印nums和lucky

n = int(input("请输入您所想的数字:"))
i = 1
j = 0
nums = list()
lucky = list()
print(n)

while i <= n:
    nums.append(i)
    i = i + 1

print(f"nums列表为:{nums}")

for j in nums:
    if j % 6 == 0:
        lucky.append(j)
    j = j + 1

print(f"lucky列表为:{lucky}")

结果1:

结果2: 

 练习题2:

# 列表嵌套:
# 3个教室[[],[],[]]
# 8名讲师['A','B','C','D','E','F','G','H']
# 随机分配
import random
 
classroom = [[],[],[]]
teacher = ['A','B','C','D','E','F','G','H']
 
j = random.randint(0,2)
 
for i in teacher:
    classroom[j].append(i)
    j = random.randint(0,2)
 
print(f"分配后为:{classroom}")

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/412543.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MongoDB:常见的面试题和答案

1. 什么是MongoDB&#xff1f; MongoDB是一种非关系型数据库&#xff0c;被广泛用于大型数据存储和分布式系统的构建。MongoDB支持的数据模型比传统的关系型数据库更加灵活&#xff0c;支持动态查询和索引&#xff0c;也支持BSON格式的数据存储&#xff0c;这种格式可以支持读…

Go语言流处理,工厂模式,命令参数,序列化,单元测试

IO流 流就是数据在数据源和程序之间经历的路径。数据源可以是文件数据库或者键盘输入等&#xff0c;程序是运行在内存中的应用。 数据从数据源输入到程序的路径为输入流&#xff0c;从内存输出到数据源的路径为输出流。 流是以内存为核心&#xff0c;输入到内存就是输入流&am…

网络原理——IP地址与mac地址

目录 IP地址 IP地址 IP地址的组成 子网掩码 mac地址 冲突域与广播域 数据传输流程 IP地址 IP地址 互联网协议地址。每一个联网的主机都会分配一个IP地址。为32位二进制数&#xff0c;用4个.均分为四部分&#xff0c;在命令提示符中输入&#xff1a;ipconfig命令&#…

35岁的测试工程师被公司强行辞退,感叹道:我以前就该好好努力了

曾经的高薪软件测试工程师&#xff0c;今年35岁了&#xff0c;被公司劝退了&#xff0c;外卖跑到凌晨&#xff0c;很累&#xff0c;但还是有一种想诉说的冲动。哪怕让大家觉得已经说得太多了&#xff0c;烦了&#xff0c;都成祥林嫂了&#xff0c;但是&#xff0c;我是真的想说…

如何报名2023年CDGP数据治理专家认证?看这里

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…

java中必会String的常用方法(IT枫斗者)

java中必会String的常用方法&#xff08;IT枫斗者&#xff09; 概述 在Java语言中&#xff0c;所有类似“ABC”的字面值&#xff0c;都是String类的实例&#xff1b;String类位于java.lang包下&#xff0c;是Java语言的核心类&#xff0c;提供了字符串的比较、查找、截取、大小…

NumPy 初学者指南中文第三版:6~10

原文&#xff1a;NumPy: Beginner’s Guide - Third Edition 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 六、深入探索 NumPy 模块 NumPy 具有许多从其前身 Numeric 继承的模块。 其中一些包具有 SciPy 对应版本&#xff0c;可能具有更完整的功能。 我们将在下一章…

教你用Python和wxPython模块打造一个ChatGPT式打字效果程序

应用场景&#xff0c;可以使用类似ChatGPT回复的打字效果来增强用户体验或提高应用程序的可读性&#xff1a; 聊天机器人&#xff1a;当聊天机器人回复用户消息时&#xff0c;使用打字效果可以更好地模拟真实聊天体验&#xff0c;增强用户对聊天机器人的信任感。电子邮件客户端…

尚硅谷大数据技术Hadoop教程-笔记04【Hadoop-MapReduce】

视频地址&#xff1a;尚硅谷大数据Hadoop教程&#xff08;Hadoop 3.x安装搭建到集群调优&#xff09; 尚硅谷大数据技术Hadoop教程-笔记01【大数据概论】尚硅谷大数据技术Hadoop教程-笔记02【Hadoop-入门】尚硅谷大数据技术Hadoop教程-笔记03【Hadoop-HDFS】尚硅谷大数据技术Ha…

DPU02国产USB转UART控制芯片替代CP2102

目录DPU02简介DPU02芯片特性应用DPU02简介 DPU02是高度集成的USB转UART的桥接控制芯片&#xff0c;该芯片为RS-232设计更新为USB设计&#xff0c;并简化PCB组件空间提供了一个简单的解决方案。       DPU02包括了一个USB 2.0全速功能控制器、USB收发器、振荡器、EEPROM和带…

HTML3.1表格

一、表格标签(行列的单元格方式整齐展示数据) 属性值&#xff1a; 标签名说明table 整体&#xff0c;包裹多个tr tr行&#xff0c;包裹tdtd单元格&#xff0c;包裹内容 注&#xff1a;标签嵌套关系&#xff1a;table>tr>td 代码&#xff1a; <!DOCTYPE html> &…

37岁测试工程师被裁,120天没找到工作,无奈...

从短期来看&#xff0c;程序员的确算是个不错的工作&#xff0c;薪水也比一般岗位高很多&#xff0c;但是从长远来看&#xff0c;程序员的中年危机会比其他岗位来的更早&#xff0c;很多程序员只有到了35岁左右&#xff0c;才能真正认清楚互联网行业&#xff0c;尤其是被裁之后…

日撸 Java 三百行day23-24

文章目录说明day23 使用具有通用性的队列1.复用技术2.包装类3.java内存分配4.代码day24 二叉树的建立1.思路2.代码说明 闵老师的文章链接&#xff1a; 日撸 Java 三百行&#xff08;总述&#xff09;_minfanphd的博客-CSDN博客 自己也把手敲的代码放在了github上维护&#xff…

看完这篇 教你玩转渗透测试靶机vulnhub——My File Server: 2

Vulnhub靶机My File Server: 2渗透测试详解Vulnhub靶机介绍&#xff1a;Vulnhub靶机下载&#xff1a;Vulnhub靶机安装&#xff1a;Vulnhub靶机漏洞详解&#xff1a;①&#xff1a;信息收集&#xff1a;②&#xff1a;FTP匿名登入③&#xff1a;SSH私钥登入④&#xff1a;SMB共享…

超详细从入门到精通,pytest自动化测试框架实战-测试运行钩子(七)

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 pytest中用例执行相…

数据的表示和存储——

目录 浮点数的编码表示 浮点数类型 ​编辑 浮点数的表示 &#xff08;1&#xff09;浮点数&#xff08;Float Point&#xff09;的表示范围 &#xff08;2&#xff09;规格化数形式 &#xff08;3&#xff09;IEEE 754标准 其他形式的机器数表示 个人总结 浮点数的编码表…

深度学习_Learning Rate Scheduling

我们在训练模型时学习率的设置非常重要。 学习率的大小很重要。如果它太大&#xff0c;优化就会发散&#xff0c;如果它太小&#xff0c;训练时间太长&#xff0c;否则我们最终会得到次优的结果。其次&#xff0c;衰变率同样重要。如果学习率仍然很大&#xff0c;我们可能会简…

MySQL NDB Cluster使用docker compose一键部署

本文主要用来学习MySQL NDB Cluster 解决学习过程中的痛点&#xff1a;需要开启N台VMware虚拟机&#xff0c;电脑不堪重负 使用docker部署&#xff0c;完美解决 本文使用的docker image: mysql/mysql-cluster:8.0 创建mysql_cluster目录&#xff0c;后续操作都在这个目录下 …

基于html+css的盒子展示7

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

系统集成项目管理工程师软考第三章习题(每天更新)

第一章指路&#xff1a;系统集成项目管理工程师软考第一章习题&#xff08;已完结&#xff09;_程序猿幼苗的博客-CSDN博客 第二章指路&#xff1a;系统集成项目管理工程师软考第二章习题&#xff08;已完结&#xff09;_程序猿幼苗的博客-CSDN博客 第3章信息系统集成专业技术…