Chapter 14 Python数据容器总结

news2024/11/15 8:09:09

欢迎大家订阅【Python从入门到精通】专栏,一起探索Python的无限可能!

文章目录

  • 前言
  • 一、数据容器对比
  • 二、数据容器的通用操作
  • 【拓展】字符串大小比较


前言

Python 作为一种高级编程语言,内置了多种强大的数据容器,帮助开发者以更加直观和灵活的方式处理复杂的数据结构。常见的 Python 数据容器包括列表(List)、元组(Tuple)、字典(Dict)和集合(Set)。每种容器都有其独特的特性和适用场景,适合存储不同类型的数据。


本篇文章参考:黑马程序员

一、数据容器对比

在前面章节的学习中,我们深入了解了列表(List)、元组(Tuple)、字典(Dict)和集合(Set)这五类数据容器的特点及其应用场景。
数据容器特点对比:在这里插入图片描述

二、数据容器的通用操作

数据容器通用功能:
在这里插入图片描述
①遍历:
五类数据容器都支持for循环遍历。
基本语法:
for 临时变量 in 数据容器:
  对临时变量进行处理

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

②统计数据容器的元素总数:
统计数据容器中全部元素的数量
语法:len(数据容器)

my_list = [1, 2, 3, 4, 5]
my_tuple = (1, 2, 3, 4, 5)
my_str = "abcdefg"
my_set = {1, 2, 3, 4, 5}
my_dict = {"key1": 1, "key2": 2, "key3": 3, "key4": 4, "key5": 5}

# len()函数统计元素个数
print(f"列表的元素个数:{len(my_list)}")
print(f"元组的元素个数:{len(my_tuple)}")
print(f"字符串的元素个数:{len(my_str)}")
print(f"集合的元素个数:{len(my_set)}")
print(f"字典的元素个数:{len(my_dict)}")

输出结果:
列表的元素个数:5
元组的元素个数:5
字符串的元素个数:7
集合的元素个数:5
字典的元素个数:5

③统计数据容器的最大元素:
语法:max(数据容器)

my_list = [1, 2, 3, 4, 5]
my_tuple = (1, 2, 3, 4, 5)
my_str = "abcdefg"
my_set = {1, 2, 3, 4, 5}
my_dict = {"key1": 1, "key2": 2, "key3": 3, "key4": 4, "key5": 5}

# max最大元素
print(f"列表最大的元素:{max(my_list)}")
print(f"元组最大的元素:{max(my_tuple)}")
print(f"字符串最大的元素:{max(my_str)}")
print(f"集合最大的元素:{max(my_set)}")
print(f"字典最大的元素:{max(my_dict)}")

输出结果:
列表最大的元素:5
元组最大的元素:5
字符串最大的元素:g
集合最大的元素:5
字典最大的元素:key5

④统计数据容器的最小元素:
语法:min(数据容器)

my_list = [1, 2, 3, 4, 5]
my_tuple = (1, 2, 3, 4, 5)
my_str = "abcdefg"
my_set = {1, 2, 3, 4, 5}
my_dict = {"key1": 1, "key2": 2, "key3": 3, "key4": 4, "key5": 5}

# min最小元素
print(f"列表最小的元素:{min(my_list)}")
print(f"元组最小的元素:{min(my_tuple)}")
print(f"字符串最小的元素:{min(my_str)}")
print(f"集合最小的元素:{min(my_set)}")
print(f"字典最小的元素:{min(my_dict)}")

输出结果:
列表最小的元素:1
元组最小的元素:1
字符串最小的元素:a
集合最小的元素:1
字典最小的元素:key1

⑤排序:
方式一:正向排序
语法:sorted(容器)
注意:排序后得到的对象为列表类型。

# 进行容器的排序
my_list = [3, 1, 2, 5, 4]
my_tuple = (3, 1, 2, 5, 4)
my_str = "bdcefga"
my_set = {3, 1, 2, 5, 4}
my_dict = {"key3": 1, "key1": 2, "key2": 3, "key5": 4, "key4": 5}

print(f"列表对象的排序结果:{sorted(my_list)}")
print(f"元组对象的排序结果:{sorted(my_tuple)}")
print(f"字符串对象的排序结果:{sorted(my_str)}")
print(f"集合对象的排序结果:{sorted(my_set)}")
print(f"字典对象的排序结果:{sorted(my_dict)}")#将字典的value统统抛弃,只保留key

输出结果:
列表对象的排序结果:[1, 2, 3, 4, 5]
元组对象的排序结果:[1, 2, 3, 4, 5]
字符串对象的排序结果:[‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’]
集合对象的排序结果:[1, 2, 3, 4, 5]
字典对象的排序结果:[‘key1’, ‘key2’, ‘key3’, ‘key4’, ‘key5’]

方式二:反向排序
语法:sorted(容器, [reverse=True])
注意:排序后得到的对象为列表类型。

my_list = [3, 1, 2, 5, 4]
my_tuple = (3, 1, 2, 5, 4)
my_str = "bdcefga"
my_set = {3, 1, 2, 5, 4}
my_dict = {"key3": 1, "key1": 2, "key2": 3, "key5": 4, "key4": 5}

print(f"列表对象的反向排序结果:{sorted(my_list, reverse=True)}")
print(f"元组对象的反向排序结果:{sorted(my_tuple, reverse=True)}")
print(f"字符串对象反向的排序结果:{sorted(my_str, reverse=True)}")
print(f"集合对象的反向排序结果:{sorted(my_set, reverse=True)}")
print(f"字典对象的反向排序结果:{sorted(my_dict, reverse=True)}")

输出结果:
列表对象的反向排序结果:[5, 4, 3, 2, 1]
元组对象的反向排序结果:[5, 4, 3, 2, 1]
字符串对象反向的排序结果:[‘g’, ‘f’, ‘e’, ‘d’, ‘c’, ‘b’, ‘a’]
集合对象的反向排序结果:[5, 4, 3, 2, 1]
字典对象的反向排序结果:[‘key5’, ‘key4’, ‘key3’, ‘key2’, ‘key1’]

⑥类型转换:
list(容器):将给定容器转换为列表
tuple(容器):将给定容器转换为元组
str(容器):将给定容器转换为字符串
set(容器):将给定容器转换为集合

# 类型转换: 容器转列表
print(f"列表转列表的结果:{list(my_list)}")
print(f"元组转列表的结果:{list(my_tuple)}")
print(f"字符串转列表结果:{list(my_str)}")   #将字符串的每一个元素取出作为列表的每一个元素
print(f"集合转列表的结果:{list(my_set)}")
print(f"字典转列表的结果:{list(my_dict)}")   #将字典的value统统抛弃,只保留key

输出结果:
列表转列表的结果:[1, 2, 3, 4, 5]
元组转列表的结果:[1, 2, 3, 4, 5]
字符串转列表结果:[‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’]
集合转列表的结果:[1, 2, 3, 4, 5]
字典转列表的结果:[‘key1’, ‘key2’, ‘key3’, ‘key4’, ‘key5’]

# 类型转换: 容器转元组
print(f"列表转元组的结果:{tuple(my_list)}")
print(f"元组转元组的结果:{tuple(my_tuple)}")
print(f"字符串转元组结果:{tuple(my_str)}")   #将字符串的每一个元素取出作为元组的每一个元素
print(f"集合转元组的结果:{tuple(my_set)}")
print(f"字典转元组的结果:{tuple(my_dict)}")   #将字典的value统统抛弃,只保留key

输出结果:
列表转元组的结果:(1, 2, 3, 4, 5)
元组转元组的结果:(1, 2, 3, 4, 5)
字符串转元组结果:(‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’)
集合转元组的结果:(1, 2, 3, 4, 5)
字典转元组的结果:(‘key1’, ‘key2’, ‘key3’, ‘key4’, ‘key5’)

# 类型转换: 容器转字符串
print(f"列表转字符串的结果是:{str(my_list)}")
print(f"元组转字符串的结果是:{str(my_tuple)}")
print(f"字符串转字符串结果是:{str(my_str)}")
print(f"集合转字符串的结果是:{str(my_set)}")
print(f"字典转字符串的结果是:{str(my_dict)}")

输出结果:
列表转字符串的结果是:[1, 2, 3, 4, 5]
元组转字符串的结果是:(1, 2, 3, 4, 5)
字符串转字符串结果是:abcdefg
集合转字符串的结果是:{1, 2, 3, 4, 5}
字典转字符串的结果是:{‘key1’: 1, ‘key2’: 2, ‘key3’: 3, ‘key4’: 4, ‘key5’: 5}

# 类型转换: 容器转集合
print(f"列表转集合的结果:{set(my_list)}")
print(f"元组转集合的结果:{set(my_tuple)}")
print(f"字符串转集合结果:{set(my_str)}")   #将字符串的每一个元素取出作为集合的每一个元素
print(f"集合转集合的结果:{set(my_set)}")
print(f"字典转集合的结果:{set(my_dict)}")   #将字典的value统统抛弃,只保留key

输出结果:
列表转集合的结果:{1, 2, 3, 4, 5}
元组转集合的结果:{1, 2, 3, 4, 5}
字符串转集合结果:{‘a’, ‘e’, ‘c’, ‘g’, ‘f’, ‘d’, ‘b’}
集合转集合的结果:{1, 2, 3, 4, 5}
字典转集合的结果:{‘key1’, ‘key2’, ‘key4’, ‘key3’, ‘key5’}

【拓展】字符串大小比较

在程序中,字符串所用的所有字符,如大小写英文单词、数字、特殊符号(!、\、|、@、#、空格等)都有其对应的ASCII码表值,即每一个字符都能对应上一个数字的码值。
在这里插入图片描述
比较规则:

  • 字符比较:
    基于数字的码值大小进行比较
  • 字符串比较:
    从字符串的第一个字符开始逐一比较,直到找到不同的字符为止。如果某个字符串在比较中到达了结束而另一个字符串还有剩余字符,则较长的字符串被认为大于较短的字符串。
    在这里插入图片描述
    【分析】字符串"abc"与字符串"abd"进行比较:
    先比较 “abc” 的第一个字符 ‘a’ 和 “abd” 的第一个字符 ‘a’,‘a’ 等于 ‘a’,继续比较下一个字符;
    比较 “abc” 的第二个字符 ‘b’ 和 “abd” 的第二个字符 ‘b’,‘b’ 等于 ‘b’,继续比较下一个字符;
    比较 “abc” 的第三个字符 ‘c’ 和 “abd” 的第三个字符 ‘d’,此时’c’ 和 ‘d’ 是不同的字符,根据ASCII码表,‘c’ 的编码值为 99,‘d’ 的编码值为 100,因此,‘c’ < ‘d’。
    综上所述,字符串"abc"小于字符串"abd"。
    在这里插入图片描述
    【分析】字符串"a"与字符串"ab"进行比较:
    先比较 “a” 的第一个字符 ‘a’ 和 “ab” 的第一个字符 ‘a’,‘a’ 等于 ‘a’,继续比较下一个字符;
    对于字符串 “a”,已经没有更多的字符可以比较,因为它只有一个字符。而对于字符串 “ab”,第二个字符是 ‘b’。根据字符串比较的规则,字符串"a"小于字符串"ab"。
# abc比较abd
print(f"abd>abc:{"abd">"abc"}")
# a比较ab
print(f"ab>a:{"ab">"a"}")
# a比较A
print(f"a>A:{"a">"A"}")
# key1比较key2
print(f"Key2>key2:{"key2">"key1"}")

输出结果:
abd>abc:True
ab>a:True
a>A:True
Key2>key2:True

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

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

相关文章

【GoLang】Golang 快速入门(第一篇)

目录 1.简介&#xff1a; 2.设计初衷&#xff1a; 3.Go语言的 特点 4.应用领域: 5.用go语言的公司&#xff1a; 6. 开发工具介绍以及环境搭建 1.工具介绍: 2.VSCode的安装: 3.安装过程&#xff1a; 4.Windows下搭建Go开发环境--安装和配置SDK 1.搭建Go开发环境 - 安装…

【洛谷】P1088 [NOIP2004 普及组] 火星人——C++

本题我们会用到函数next_permutation(start,end),是头文件algorithm标准库中的一个标准函数&#xff0c;用来表示[start,end]内存的数组中产生一个字典排序&#xff0c;比如[1 , 2 ,3]到[2 ,3, 1]再到[3 , 1, 2]这样的&#xff0c;这个函数的复杂度为&#xff08;n!&#xff09…

Rust代码答疑报错|Python一对一辅导答疑

Question 你好&#xff0c;我是悦创。 学员答疑&#xff1a; https://code.bornforthis.cn/?id4e72084d-1eaf-44ed-8067-744671491574https://code.bornforthis.cn/?id664ff169-41d6-409f-a05b-02ed42279759 问题代码&#xff1a; // You can bring module paths into sc…

开发日志:windows修复SSL漏洞CVE-2016-2183(3389端口)

漏洞危害&#xff1a; 具有足够资源的中间人攻击者可利用此漏洞,通过“birthday”攻击检测会在固定密码与已知纯文本之间泄露 XOR 的冲突,进而泄露密码文本(例如安全 HTTPS Cookie),并可能导致劫持经认证的会话。 参见《支持SSL 64位块大小的密码套件(SWEET32)-修复方案》 参考…

html 常用css样式及排布问题

1.常用样式 <style>.cy{width: 20%;height: 50px;font-size: 30px;border: #20c997 solid 3px;float: left;color: #00cc00;font-family: 黑体;font-weight: bold;padding: 10px;margin: 10px;}</style> ①宽度&#xff08;长&#xff09; ②高度&#xff08;宽&a…

pikachu 之CSRF(跨站请求伪造)get和post型

CSRF&#xff08;跨站请求伪造&#xff09; 概念 跨站请求伪造&#xff08;Cross-Site Request Forgery&#xff0c;简称CSRF&#xff09;是一种攻击方式&#xff0c;攻击者通过伪造用户的请求&#xff0c;欺骗受害者在不知情的情况下执行不想要的操作。这种攻击利用了用户已经…

使用python连接neo4j时报错:IndexError: pop from an empty deque的解决办法

遇见这个错&#xff0c;首先可能是python现在的py2neo的版本不对&#xff0c;把2021.1.0版本卸载&#xff0c;下载 py2neo4.2.0版本。我不是&#xff0c;一阵搜&#xff0c;发现需要改配置文件 首先找到你的neo4j的安装路径 在网上看的是&#xff0c;先找到data/dbms/auth文件…

产品升级|宏基因组产品增加新成员:多酚代谢注释数据库

多酚&#xff08;polyphenol&#xff09;是一种化学多样且丰富的植物衍生化合物&#xff0c;包括10000多个化学式和几个结构家族&#xff0c;包括聚合物&#xff08;例如单宁&#xff09;、单体&#xff08;例如类黄酮&#xff09;和简单酚类&#xff08;例如酚酸&#xff09;。…

nginx漏洞修复 ngx_http_mp4_module漏洞(CVE-2022-41742)【低可信】 nginx版本升级

风险描述&#xff1a; Nginx 是一款轻量级的Web服务器、反向代理服务器。 Nginx 的受影响版本中的ngx _http_mp4_module模块存在内存越界写入漏洞&#xff0c;当在配置中使用 mp4 directive时&#xff0c;攻击者可利用此漏洞使用使用ngx_http_mp4_module模块处理特制的音频或视…

服务攻防-框架安全(漏洞复现)

关闭靶场 sudo docker-compose down 运行此靶场 sudo docker-compose up -d 查看启动环境 sudo docker ps 运行dockers容器 docker exec -it 64052abd288b /bin/bash thinkphp框架 thinkphp 2 - rce漏洞复现 docker exec -it 731dbae0e0b5 /bin/bash 集成化工具扫描 可以命令…

【豆包Marscode体验官】揭秘MarsCode AI编辑助手:高效智能编辑新纪元之入门指导与最佳实践

文章目录 1. 概述2. 工具使用过程2.1 MarsCode插件简介2.2 安装和配置2.2.1 安装MarsCode插件2.2.2 配置MarsCode插件 2.3 各个功能的使用2.3.1 代码补全2.3.2 代码补全 Pro【操作提示&#xff0c;No suggestion from Model&#xff0c;不知道是不是版本的问题】2.3.3 代码生成…

爬虫学习2:爬虫爬取网页的信息与图片的方法

爬虫爬取网页的信息与图片的方法 爬取人物信息 import requestshead {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0" } # 这是get请求带参数的模式…

boost::asio网络编程

目录 基础操作端点的生成创建socket服务端创建acceptor用于监听传入的连接请求 并 接受连接服务器绑定端口客户端通过ip连接服务端 connect客户端通过域名连接服务端服务器监听 接受连接读写buffer同步的读写实现一个同步读写的服务器与客户端应答 异步读写函数异步写异步读官方…

冒泡排序(数组作为函数参数)

什么是冒泡排序&#xff1f; 冒泡排序&#xff08;Bubble Sort&#xff09;也是一种简单直观的排序算法。它重复地走访过要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换&#xff0c;…

CVE-2020-7248 OpenWRT libubox标记二进制数据序列化漏洞(更新中)

提要 该文档会一直处于更新当中&#xff0c;当状态为完毕后&#xff0c;才是更新完成。由于网络上关于该漏洞原理的分析文档和资源实在是太少&#xff0c;而本人关于该方向也才是刚入门&#xff0c;能力有限&#xff0c;所以复现需要的时间较长&#xff0c;需要补充和学习的东西…

中国的AI技术水平,是否已经到了能够帮助创作者实现内容的程度?

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频百万播放量https://aitools.jurilu.com/ 是的&#xff0c;早就实现了&#xff0c;我从上年开始用AI辅助写小说&#xff0c;已经挣了2万多。 这是我在番茄那开的小号&#xff0…

Redis的集群模式

1. Redis三种集群模式 Redis 提供的三种集群模式各有其特点和适用场景&#xff0c;以下是对这三种模式的简要概述&#xff1a; 主从模式&#xff08;Master-Slave Replication&#xff09;&#xff1a; 在这种模式下&#xff0c;数据在主节点&#xff08;Master&#xff09;上…

服务器部署环境(docker安装Mysql + Redis + MongoDB)

1. 安装Docker 1、选择要安装的平台 Docker要求CentOS系统的内核版本高于3.10 uname -r #通过 uname -r 命令查看你当前的内核版本官网地址 2. 卸载已安装的Docker, 使用Root权限登录 Centos。确保yum包更新到最新。 sudo yum update如果操作系统没有安装过Docker , 就不需要…

自动化测试之python操作Oracle遇到的问题:Oracle-Error-Message: DPI-1047

自动化测试需要连接数据库&#xff0c;进行一些增删改查的操作&#xff0c;那么针对python语言&#xff0c;如何才能够通过程序完成连接数据库并且进行操作呢&#xff1f;可以通过cx_oracle这个模块来实现。 一、问题描述&#xff1a; 下面是我在实践的过程中遇到的问题&#…

面试知识储备-redis和redission

1.redis的使用 引入依赖&#xff0c;自动注解redistemplate即可使用&#xff0c; 默认的redistemplate存入到redis中是字符流的形式&#xff0c;需要配置redistemplate&#xff0c; 如果不想配置&#xff0c;可以使用stringRedistemplate 可以使用string类型&#xff0c;但是…