生命在于学习——Python人工智能原理(4.4)

news2024/9/20 1:14:51

在这里插入图片描述

三、Python的数据类型

3.2 Python的组合数据类型

特点:表示多个元素的组合,可以包含不同类型的元素,甚至是其他的组合数据类型。
在内存中通常需要额外的空间来存储元素间的关系。
组合数据类型能够将多个同类型或不同类型的数据组织起来,通过单一的表示并根据数据之间的关系,可将它们分为3类:序列类型、集合类型、映射类型。
序列类型是一个元素向量,元素之间存在先后关系,通过序号访问,元素之间不排他。
集合类型是一个元素的集合,元素之间无序,集合中每个元素值都具有唯一性,集合类型就像一个带有标签的容器。
映射类型是键-值 数据项的集合,每个元素都是一个键-值对,表示为(key,value),其中key具有唯一性。映射类型就像一个标签收纳盒,给每个数据贴上唯一的标签,可以通过具有特定意义的名字或记号来获得数据。
Python中有很多数据类型都是序列类型,其中比较重要的是字符串、元组、列表。
元组是包含0个或多个数据项的不可变序列类型,即元祖一旦生成,任何数据项都不可替换或删除。
列表则是一个可以修改数据项的序列类型,使用非常灵活。
字符串可以看成一个单字符的有序组合,属于序列类型,同时也是一种基本数据类型。
序列类型都使用相同的索引体系,支持双向索引。
序列类型通用操作符与函数:
在这里插入图片描述

3.2.1 元组类型

元组是Python中的一种有序、不可变、可迭代的数据类型。元组与列表相似,但主要区别在于元组的不可变性。一旦创建,元组的内容无法修改。
元组类型特点:

  1. 有序性:元组中的元素是按照其插入顺序有序排列的。
  2. 不可变性:元组的元素不可修改,包括增删修等操作。
  3. 可迭代性:可以通过循环遍历元组中的元素。
  4. 多数据类型:元组中的元素可以是不同的数据类型,包括数字、字符串、其他元祖等。
  5. 创建元组:Python可以通过两种方式创建元组,一种是用tuple()函数创建,tuple()函数中的参数是一个可迭代的数据,若没有传入参数,则创建空元祖。另一种是直接用圆括号包含多个用逗号隔开的元素创建元组,非空元组的括号可以忽略。
# 创建一个元组  
my_tuple = (1, 2, 3, 4, 5)  
  
# 访问元组中的元素  
first_element = my_tuple[0]  # 输出 1  
  
# 遍历元组  
for element in my_tuple:  
    print(element)  
  
# 尝试修改元组元素(会报错)  
# my_tuple[0] = 10  # 这行代码会抛出 TypeError 异常  
  
# 元组可以包含不同类型的元素  
mixed_tuple = (1, 'two', 3.0, [4, 5, 6])  # 注意这里虽然有一个列表,但元组本身是不可变的

3.2.2 列表类型

列表是一个可变的序列类型,可以修改、添加、删除其中的元素。
列表使用方括号 [] 来表示。
列表是 Python 中最常用的数据结构之一,可以包含任何类型的元素,且支持元素间的各种操作(如排序、查找等)。
由于列表是可变的,所以它在内存中的表示相对于元组来说更加复杂,并且在需要固定值的场合中不太适合使用。

当然,Python中的列表操作确实非常丰富。以下是对列表操作的一个详细归纳,包括基本的和高级的操作,并辅以代码示例:

一、基本列表操作
创建列表
使用方括号 [] 包围元素,元素之间用逗号 , 分隔。
python
my_list = [1, 2, 3, 4, 5]
访问列表中的元素
通过索引访问,索引从0开始。
python
first_element = my_list[0]  # 访问第一个元素
更新列表
直接对索引位置赋值以更新元素。
python
my_list[0] = 10  # 更新第一个元素为10
删除列表元素
使用 del 语句删除指定索引的元素。
使用 remove() 方法删除指定值的元素(第一个匹配的)。
使用 pop() 方法删除指定索引的元素(并返回该元素)。
python
del my_list[0]  # 删除第一个元素  
my_list.remove(2)  # 删除第一个值为2的元素  
popped_element = my_list.pop(1)  # 删除索引为1的元素,并返回它
列表拼接与截取
使用 + 运算符拼接两个列表。
使用切片 [start:stop:step] 截取列表的一部分。
python
new_list = my_list + [6, 7, 8]  # 拼接列表  
sliced_list = my_list[1:4]  # 截取索引1到3(不包含)的元素
二、高级列表操作
列表函数与方法
len(list):返回列表长度。
min(list)max(list):返回列表中的最小值和最大值。
list(iterable):将可迭代对象转换为列表。
list.append(element):在列表末尾添加元素。
list.extend(iterable):将可迭代对象的元素添加到列表末尾。
list.insert(index, element):在指定索引处插入元素。
list.index(element, [start, [stop]]):返回元素在列表中首次出现的索引。
list.count(element):返回元素在列表中出现的次数。
list.sort([key[, reverse=True|False]]):对列表进行排序(会改变原列表)。
sorted(iterable, key=None, reverse=False):返回排序后的新列表(不会改变原列表)。
列表推导式
使用列表推导式可以简洁地创建列表。
python
squares = [x**2 for x in range(1, 6)]  # 创建包含1到5的平方的列表
列表嵌套
列表可以包含其他列表,形成嵌套列表。
python
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]  # 创建一个3x3的矩阵
列表比较
列表之间可以使用比较运算符(如 ==, !=, <, >, <=, >=)进行比较。
遍历列表
使用 for 循环遍历列表中的每个元素。
使用 enumerate() 函数在遍历时同时获取元素和索引。
列表元素的排序与查找
如前所述,可以使用 sort() 方法或 sorted() 函数对列表进行排序。
使用 index() 方法查找元素在列表中的索引。
三、示例代码
python
# 示例:使用列表的基本和高级操作  
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]  
  
# 访问和更新元素  
print(my_list[0])  # 输出: 3  
my_list[0] = 0  
  
# 删除元素  
my_list.remove(1)  
  
# 列表排序  
my_list.sort()  
print(my_list)  # 输出: [0,

3.2.3 集合类型

集合(Set)是Python中的一种基本数据结构,用于存储多个不重复的元素。与列表和元组不同,集合中的元素是无序的,即集合中的元素没有固定的位置。集合中的元素必须是可哈希的,即不可变类型,如数字、字符串、元组等。

在Python中,可以使用两种方式来创建集合:

使用大括号 {},但需要注意,如果大括号内没有元素,则创建的是一个空字典,而不是空集合。因此,要创建一个空集合,应使用 set() 函数。

# 创建一个空集合  
empty_set = set()  
  
# 创建一个非空集合  
my_set = {1, 2, 3, 4, 5}

集合特点

无序性:集合中的元素没有固定的顺序,即集合不支持通过索引来访问元素。
唯一性:集合中的元素是唯一的,即集合中的每个元素都是独一无二的。如果试图向集合中添加已存在的元素,集合不会变化。
可变性:集合是可变的,即可以向集合中添加、删除或修改元素。
支持多种运算:集合支持常见的集合运算,如并集、交集、差集和对称差集等。
支持快速成员关系测试:集合可以很快地进行成员关系测试,即判断一些元素是否出现在集合中。
元素类型的限制:集合中的元素必须是可哈希的,即元素必须是不可变的,如数字、字符串、元组等。不可哈希的类型,如列表和字典,不能作为集合的元素。

集合操作

添加元素:使用 add() 方法向集合中添加一个元素,或使用 update() 方法添加多个元素。
python
my_set.add(6)  # 添加单个元素  
my_set.update([7, 8, 9])  # 添加多个元素
删除元素:使用 remove() 方法删除指定值的元素(如果元素不存在,会抛出异常),或使用 discard() 方法删除指定值的元素(如果元素不存在,不会抛出异常)。另外,可以使用 pop() 方法随机删除并返回一个元素(如果集合为空,会抛出异常)。
python
my_set.remove(5)  # 删除元素5  
my_set.discard(6)  # 尝试删除元素6,如果不存在则不报错  
removed_element = my_set.pop()  # 随机删除并返回一个元素
集合运算:
并集:使用 | 运算符或 union() 方法计算两个集合的并集。
交集:使用 & 运算符或 intersection() 方法计算两个集合的交集。
差集:使用 - 运算符或 difference() 方法计算两个集合的差集(第一个集合有而第二个集合没有的元素)。
对称差集:使用 ^ 运算符或 symmetric_difference() 方法计算两个集合的对称差集(两个集合中不同时存在的元素)。
python
set1 = {1, 2, 3}  
set2 = {2, 3, 4}  
  
union_set = set1 | set2  # {1, 2, 3, 4}  
intersection_set = set1 & set2  # {2, 3}  
difference_set = set1 - set2  # {1}  
symmetric_difference_set = set1 ^ set2  # {1, 4}
判断元素是否存在:使用 in 关键字判断一个元素是否存在于集合中。
python
if 1 in my_set:  
    print("1存在于集合中")
其他操作:集合还支持其他操作,如 clear() 方法清空集合,copy() 方法复制集合,isdisjoint() 方法判断两个集合是否没有交集等。

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

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

相关文章

Centos+Jenkins+Maven+Git 将生成的JAR部署到远程服务器上

1、登录 没有安装的参考下面的安装步骤先安装: Jenkins安装手册 输入账号、密码登录系统。 2、新建任务 2.1 创建页面 1,“输入一个任务名称”; 2,任务类型点击“构建一个maven项目”; 3,点击“确定”,此时,构建任务创建完成。 2.2 General 1、描述:输入要部署…

热电发电机越来越受到研发关注

热电发电机 (TEG) 利用热量&#xff08;或更准确地说&#xff0c;温差&#xff09;和众所周知的塞贝克效应来发电。它们的应用范围从收集可用热能&#xff0c;尤其是在工业和其他情况下“浪费”的热能&#xff0c;到在放射性同位素热发电机 (RTG) 中使用航天器的放射性电源作为…

day45--RocketMQ(三)

1. 高级功能 1.1 消息存储 分布式队列因为有高可靠性的要求&#xff0c;所以数据要进行持久化存储。 消息生成者发送消息MQ收到消息&#xff0c;将消息进行持久化&#xff0c;在存储中新增一条记录返回ACK给生产者MQ push 消息给对应的消费者&#xff0c;然后等待消费者返回A…

离镜头5cm也能拍清?Pura 70 超聚光微距如何做到“贴脸拍摄”?

虽然微距摄影在手机上已经算不得什么新鲜的功能&#xff0c;但要把微距摄影拍出高质量的效果&#xff0c;还是具有挑战性的。 众所周知&#xff0c;在微距摄影领域&#xff0c;镜头离被拍摄物品越近&#xff0c;照片的解析力和细节就越突出。但对于器件来讲&#xff0c;对焦距离…

年入百万不是梦?小米汽车员工晒收入,揭秘行业高薪背后的真相!

近日&#xff0c;社交媒体上出现了一位小米汽车员工的“凡尔赛”发言&#xff0c;其晒出的收入水平引发了网友们的热议。 这份令人艳羡的薪资条&#xff0c;也让“小米汽车待遇”迅速登上了热搜榜。究竟是什么样的魔力&#xff0c;让这家造车新势力能够开出如此优渥的条件&…

linux与windows环境下qt程序打包教程

一、演示环境 qt5.14.2 二、Linux 2.1 关联依赖文件 2.1.1 下载打包工具 在Windows环境下可以使用 Qt Creator自带的官方工具进行打包&#xff0c;而Linux环境下没有官方工具&#xff0c;需要借助第三方工具才能打包。如&#xff1a;linuxdeployqt、CQtDeployer、AppImage…

薄冰英语语法学习--名词1-不规则的

昨天学了&#xff0c;规则的&#xff0c;就是加es&#xff0c;或者变y为i加es&#xff0c;以及加s,还有变f和fe为v加es 今天学不规则。不规则就是完全没有规则&#xff0c;和s和es没有关系。就写死了告诉你&#xff0c;这个词的复数就是这样写。要硬背的。 首先来自古代英语的…

【数据结构与算法】最短路径,Floyd算法,Dijkstra算法 详解

Floyd算法 for (int k 0; k < n; k) {for (int i 0; i < n; i) {for (int j 0; j < n; j) {if (d[i][k] ! INF && d[k][j] ! INF) {d[i][j] min(d[i][j], d[i][k] d[k][j]);}}} }Dijkstra算法&#xff08;基于最小堆&#xff09; void dijkstra(int st…

篮球联盟管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;球员管理&#xff0c;用户管理&#xff0c;球队管理&#xff0c;论坛管理&#xff0c;篮球资讯管理&#xff0c;基础数据管理 前台账户功能包括&#xff1a;系统首页&#xff0…

零基础STM32单片机编程入门(二)GPIO详解及驱动LED灯实战含源码视频

文章目录 一.概要二.STM32F103C8T6单片机GPIO口特点二.STM32单片机GPIO内部结构图三.单片机GPIO推挽输出信号流向四.单片机GPIO浮空输入信号流向四.单片机GPIO引脚的复用以及重映射五.CubeMX配置一个GPIO输出驱动LED灯例程六.CubeMX工程源代码下载七.讲解视频链接地址八.小结 一…

集成了工作流引擎的办公系统,直接开发OA,ERP,mes,srm,hrm(源码)

前言 activiti工作流引擎项目&#xff0c;企业erp、oa、hr、crm等企事业办公系统轻松落地&#xff0c;一套完整并且实际运用在多套项目中的案例&#xff0c;满足日常业务流程审批需求。 一、项目形式 springbootvueactiviti集成了activiti在线编辑器&#xff0c;流行的前后端…

基于Java超市库存管理系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f;感兴趣的可以先收藏起来&#xff0c;还…

线上OOM问题排查总结

自己搭建了一个小博客&#xff0c;该文章与博客文章同步。 一般情况下&#xff0c;出现OOM主要有一下三种原因。 一次性申请对象的太多。更改申请对象数量。内存资源耗尽未释放。找到未释放的对象进行释放。本身资源不够。jmap -heap 查看堆信息。 分几种情况解决&#xff1…

基于FreeRTOS+STM32CubeMX+LCD1602+MCP4142(SPI接口)的数字电位器Proteus仿真

一、仿真原理图: 二、仿真效果: 三、STM32CubeMX配置: 1)、时钟配置: 2)、SPI配置: 3)、GPIO配置: 四、软件部分: 1)、主功能函数: void Task0_Function(void) { uint16_t buffer; uint8_t value[3]; buffer = M

python遍历文件夹中所有图片

python遍历文件夹中的图片-CSDN博客 这个是之前的版本&#xff0c;现在这个版本会更好&#xff0c;直接进来就在列表中 path glob.glob("1/*.jpg")print(path)print(len(path))path_img glob.glob("1/*.jpg")path_img.extend(path)print(len(path_img))…

Mac环境 aab包转apks,并安装apks

一、下载下载bundletool工具 Releases google/bundletool GitHub 二、将下载bundletool.jar包、aab、keystore文件全部放到同一个目录下 例如我全部放到download目录下 转换命令行&#xff1a; java -jar bundletool-all-1.16.0.jar build-apks --modeuniversal --bundle…

mprpc框架项目动态库编译

mprpc目录下的CMakeLists.txt #设置cmake的最低版本和项目名称 cmake_minimum_required(VERSION 3.0) project(mprpc)#设置项目可执行文件输出的路径 set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)#设置项目库文件输出的路径 set(LIBRARY_OUTPUT_PATH ${PROJECT_SOUR…

字节跳动联手博通:5nm AI芯片诞生了?

字节跳动联手博通&#xff1a;5nm AI芯片诞生了&#xff1f; 前言 就在6月24日&#xff0c;字节跳动正在与美国博通合作开发一款5纳米工艺的专用集成电路(ASIC) AI处理器。这款芯片旨在降低采购成本并确保高端AI芯片的稳定供应。 根据报道&#xff0c;尽管芯片设计工作进展顺利…

【Python】已解决:Python读取字典查询键报错“KeyError: ‘d‘”

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;Python读取字典查询键报错“KeyError: ‘d’” 一、分析问题背景 在Python编程中&#xff0c;字典&#xff08;dictionary&#xff09;是一种非常重要的数据结构…

C# Winform 开源UI库

WinForms&#xff0c;作为微软.NET框架下的一个桌面应用程序开发工具&#xff0c;自1999年首次亮相以来&#xff0c;已经走过了二十多年的发展历程。它以其简单直观的拖拽式界面设计和丰富的控件库&#xff0c;成为了大众喜爱的入门学习编程工具。由于它是比较基础的开发工具&a…