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

在这里插入图片描述

三、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() 方法判断两个集合是否没有交集等。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python turtle 004Hello Kity

代码&#xff1a;pythonturtle004HelloKity资源-CSDN文库 # 作者V w1933423 import math import turtle as t# 设置画笔速度 t.speed(0)# 定义函数画弧 def myarc(t1, r, angle):arc_length 2 * math.pi * r * angle / 360 # 弧长n int(arc_length / 3) 1 # 分割段数step…

新手选择代理IP时这几点误区一定要避开!

在选择代理IP时&#xff0c;许多用户可能会因为对代理IP的认识不足或受到一些误导&#xff0c;而陷入一些常见的误区。这些误区不仅可能导致用户无法达到预期的效果&#xff0c;还可能带来一些不必要的风险。下面&#xff0c;IPIDEA代理IP就与大家一同分析在选择代理IP时需要避…

【Qt+opencv】编译、配置opencv

文章目录 前言下载opencv编译opencvmingw版本 总结 前言 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习软件库&#xff0c;它包含了超过2500个优化的算法。这些算法可以用来检测和识别面部&#xff0c;识别对象&#x…

初识es(elasticsearch)

初识elasticsearch 什么是elasticsearch&#xff1f;&#xff1a; 一个开源的分部署搜索引擎、可以用来实现搜索、日志统计、分析、系统监控等功能。 什么是文档和词条&#xff1f; 每一条数据就是一个文档对文档中的内容进行分词&#xff0c;得到的词语就是词条 什么是正向…

小型海外仓布局策略:高效利用有限空间,标准化3F流程

合理高效的仓库空间设计&#xff0c;不只是对大型海外仓很关键。对空间有限的小型海外仓来说或许价值更大。 本身仓储空间就有限&#xff0c;如果还没有科学规划&#xff0c;造成空间浪费&#xff0c;那将直接影响到核心业务的运转。 今天我们就给大家整理了对小型海外仓布局…

海外短剧系统:一扇窥探多元文化的奇妙之窗

随着全球化的推进&#xff0c;文化交流的壁垒逐渐消融&#xff0c;我们得以更加便捷地领略到世界各地的独特风情。在这一背景下&#xff0c;海外短剧系统应运而生&#xff0c;它如同一扇扇虚拟的窗户&#xff0c;将我们带入不同国家、不同民族、不同文化的世界&#xff0c;让我…

24年了 直播带货的未来如何?

32 个国家在取消电商&#xff0c; 那我国的电商呢&#xff0c;首先电商是不会被取缔的。直播电商会被严格的控制&#xff0c;比如有一家饼店&#xff0c;它线下的销售是 3000 万&#xff0c;线上抖音的销售是 5, 000 万。 这一类型小而精又专业的品牌企业&#xff0c;未来在抖…

【微前端-Single-SPA、qiankun的基本原理和使用】

背景 在实际项目中&#xff0c;随着日常跌倒导致的必然墒增&#xff0c;项目会越来越冗余不好维护&#xff0c;而且有时候一个项目会使用的其他团队的功能&#xff0c;这种跨团队不好维护和管理等等问题&#xff0c;所以基于解决这些问题&#xff0c;出现了微前端的解决方案。…

实战案例:如何用ChatGPT生成适合不同领域的高质量文章

随着人工智能技术的飞速发展&#xff0c;生成高质量文章已经不再是难题。特别是OpenAI开发的ChatGPT&#xff0c;更是为写作工作带来了极大的便利。那么&#xff0c;如何用ChatGPT生成适合不同领域的高质量文章呢&#xff1f;本文将通过实战案例&#xff0c;为大家详细讲解这一…

react学习——15react生命周期(新)

一、生命周期图新 二、生命周期三个阶段&#xff08;新&#xff09; 1. 初始化阶段&#xff1a;由ReactDOM.render()触发—初次渲染 1. constructor() 2. getDerivedStateFromProps 3. render() 4. componentDidMount()2. 更新阶段&#xff1a;由组件内部this.setSate()或…

Sensei for Mac:一键清理,系统如新!

Sensei for Mac是一款高效且易于使用的系统优化清理工具。它能够深入Mac系统内部&#xff0c;智能识别并清理无用的缓存文件、临时文件、垃圾邮件等&#xff0c;从而释放磁盘空间&#xff0c;提升系统性能。无论是日常使用还是长时间工作后&#xff0c;Sensei都能帮助你的Mac恢…

Vue_cli搭建过程项目创建

概述 vue-cli 官方提供的一个脚手架&#xff0c;用于快速生成一个 vue 的项目模板&#xff1b;预先定义 好的目录结构及基础代码&#xff0c;就好比咱们在创建 Maven 项目时可以选择创建一个 骨架项目&#xff0c;这个骨架项目就是脚手架&#xff0c;我们的开发更加的快速&am…

台灯学生用哪个牌子最好?五款学生专用台灯大全分享

随着科技的持续进步&#xff0c;电子产品无疑为我们的生活带来了极大的便利&#xff0c;同时也暗藏了不少隐患。其中最令广大家长忧心的便是孩子视力的健康&#xff0c;他们从小就面临着手机和电视等屏幕对孩子视力的潜在威胁。为了应对这一问题&#xff0c;家长们不遗余力地寻…

RT-Thread Studio实现静态线程

1创建项目 &#xff08;STM32F03ZET6&#xff09; RT-Thread项目与RT-Thread Nano 项目区别 RT-Thread: 完整版&#xff1a;这是RT-Thread的完整形态&#xff0c;适用于资源较丰富的物联网设备。功能&#xff1a;它提供了全面的中间件组件&#xff0c;如文件系统、网络协议栈、…

【网络安全学习】漏洞利用:-01- BurpSuite的基础设置使用

Burp Suite是一款集成了多种功能的Web应用渗透测试工具&#xff0c;可以帮助渗透测试人员对Web应用进行拦截、分析、修改、重放、扫描、爆破、模糊测试等操作&#xff0c;从而发现和利用Web应用中的漏洞。可以说Burp Suite是每个安全从业人员必须学会使用的安全渗透测试工具。 …

RedHat9 | RAID配置与管理

一、实验环境 1、RAID简介 RAID&#xff08;Redundant Array of Independent Disks&#xff09;&#xff0c;即独立磁盘冗余阵列&#xff0c;是一种数据存储技术。它通过将多个独立的磁盘驱动器组合起来&#xff0c;形成一个逻辑上的整体&#xff0c;从而提高数据存储的性能、…

Linux文件IO深入剖析

目录 一、文件IO引发的项目血案 1、分析 一、Linux文件系统基本概念 1、文件系统接口 2、文件系统缓存 二、文件IO 访问方式概述 1、标准文件访问方式 2、直接IO 3、实现方式 4、缓存同步 5、Linux 文件IO流程图 6、血案解决 一、文件IO引发的项目血案 事件经过&am…

lodash.js 工具库

lodash 是什么? Lodash是一个流行的JavaScript实用工具库,提供了许多高效、高兼容性的工具函数,能够方便地处理集合、字符串、数值、函数等多种数据类型,大大提高工作效率。 lodash官网 文档参见:Lodash Documentation lodash 在Vue中怎么使用? 1、首先安装 lodash np…

Nuxt3 实战 (十二):SEO 搜索引擎优化指南

添加 favicon 图标和 TDK&#xff08;标题、描述、关键词&#xff09; nuxt.config.ts 添加配置&#xff1a; export default defineNuxtConfig({app: {title:Dream Site,meta: [{ name: keywords, content: Nuxt.js,导航,网站 },{ name: description, content: 致力于打造程…

倩女幽魂攻略:押镖任务详解!

《倩女幽魂》作为一款受欢迎的角色扮演游戏&#xff0c;押镖任务是其众多任务中具有挑战性和趣味性的一个环节。在押镖过程中&#xff0c;玩家需要通过一系列任务和地图&#xff0c;完成从接镖到运送货物的整个流程。本文将为您详细解析押镖任务的各个方面&#xff0c;包括任务…