生命在于学习——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() 方法判断两个集合是否没有交集等。

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

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

相关文章

出版发行企业从传统分销到网格化营销的变革之路(AMT企源)

引言&#xff1a; 本文为该系列文章的第一篇&#xff0c;旨在介绍当前出版发行行业&#xff0c;尤其是各省级新华书店集团围绕“综合教育服务”和“大文化消费服务”两个领域的业务布局下&#xff0c;如何实现营销模式创新、营销组织创新&#xff0c;以推动新华书店集团从传统…

浮动IP绑定主机步骤

文章目录 1&#xff0c;查看本机的原有IP2&#xff0c;绑定浮动IP3&#xff0c;验证绑定情况4&#xff0c;解绑浮动IP 1&#xff0c;查看本机的原有IP ifconfig得到本机的ip是192.168.10.128 2&#xff0c;绑定浮动IP ifconfig ens33:1 192.168.10.10 netmask 255.255.255.0…

墨迹天气与AI数据湖的集成案例(集易连平台)

客户介绍 客户方为国内某皮具生产企业&#xff0c;年设计版型数千款&#xff0c;全国销售门店数一千多家&#xff0c;年销售额达20亿。该AI项目目的是将订单数据、用户行为分析、天气数据、门店位置、客流量等等一系列数据作为AI大模型的输入&#xff0c;经过大模型的训练和…

LeetCode刷题之HOT100之打家劫舍

2024/6/26 大家早上好呀&#xff01;今天不热诶&#xff0c;昨天跟镔哥跑了五公里&#xff0c;配速515简直不要太爽啊&#xff0c;跑完后在操场走一圈&#xff0c;正好发小发了群视频过来&#xff0c;聊了半小时。发小一考研二战失利&#xff0c;去干测试&#xff0c;天天累得不…

ROS话题通信机制实操Python

ROS话题通信机制实操Python 创建ROS工程发布方(二狗子)订阅方(翠花)编辑配置文件编译并执行计算图查看Python话题机制节点 ROS话题通信的理论查阅ROS话题通信流程理论 在ROS话题通信机制实现中&#xff0c;ROS master 不需要实现&#xff0c;且连接的建立也已经被封装了&#…

RedHat9 | RAID配置与管理

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

【Redis】数据持久化

https://www.bilibili.com/video/BV1cr4y1671t?p96 https://blog.csdn.net/weixin_54232666/article/details/128821360 单点redis问题&#xff1a; 数据丢失问题&#xff1a;实现Redis数据持久化并发能力问题&#xff1a;搭建主从集群&#xff0c;实现读写分离故障恢复问题&…

数据分析必备:一步步教你如何用matplotlib做数据可视化(13)

1、Matplotlib 文本 Matplotlib具有广泛的文本支持&#xff0c;包括对数学表达式的支持&#xff0c;对光栅和矢量输出的TrueType支持&#xff0c;具有任意旋转的换行符分隔文本以及unicode支持。Matplotlib包含自己的matplotlib.font_manager&#xff0c;它实现了一个跨平台&a…

和GPT-4这些大模型玩狼人杀,人类因太蠢被票死,真·反向图灵测试

「你看&#xff0c;人类一败涂地了」 这是一次「反向图灵测试」&#xff0c;几个全球最先进的大模型坐在一起&#xff0c;坐着火车唱着歌&#xff0c;但其中混进了人类&#xff1a; 而 AI 的任务&#xff0c;是把这个人类揪出来。 最近&#xff0c;一位昵称「Tore Knabe」的网…

[leetcode]number-of-longest-increasing-subsequence

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int findNumberOfLIS(vector<int> &nums) {int n nums.size(), maxLen 0, ans 0;vector<int> dp(n), cnt(n);for (int i 0; i < n; i) {dp[i] 1;cnt[i] 1;for (int j 0; j < i…

LangChain结合LLM做私有化文档搜索

我们知道LLM&#xff08;大语言模型&#xff09;的底模是基于已经过期的公开数据训练出来的&#xff0c;对于新的知识或者私有化的数据LLM一般无法作答&#xff0c;此时LLM会出现“幻觉”。针对“幻觉”问题&#xff0c;一般的解决方案是采用RAG做检索增强。 但是我们不可能把…

深入解读一下`android.os.CountDownTimer`

简介 在 Android 开发中&#xff0c;CountDownTimer 是一个非常有用的类&#xff0c;它可以用于倒计时任务&#xff0c;比如倒计时器、限时活动等。CountDownTimer 提供了一个简单的方式来实现定时操作&#xff0c;无需我们手动管理线程和计时器。 本文将深入解析 CountDownT…

Linux核心基础详解(第13天)

系列文章目录 一、Linux基础详解&#xff0c; 二、网编三要素和SSH原理 三、shell编程&#xff08;补充&#xff09; 文章目录 系列文章目录前言一、linux简介二、虚拟机简介1、设置VMware网卡1.1 修改VMware中网络1.2 修改本地net8网卡ip 2、安装命令版裸机3、安装centos操作…

CVPR 2024圆满落幕:海报创意不断,学者穿cos服装讨论学术问题?这届CVPR真是太有趣了

CVPR 2024圆满落幕&#xff1a;海报创意不断&#xff0c;学者穿cos服装讨论学术问题&#xff1f;&#xff01;这届CVPR真是太有趣了 会议之眼 快讯 2024 年 CVPR &#xff08;Computer Vision and Pattern Recogntion Conference) 即国际计算机视觉与模式识别会议&#xff0c…

【python】python入门day1

python入门 Python解析器Python注释Python中的变量&#xff08;重点&#xff09;练习&#xff1a;1、用python的print函数描述一段对话2、与计算机模拟一段对话&#xff0c;并且最终计算机需要将输入的内容全部输出3、模拟两个对话场景(根据提示输入内容&#xff0c;并且在后续…

OpenCV中掩膜(mask)图像的创建和使用

操作系统&#xff1a;ubuntu22.04OpenCV版本&#xff1a;OpenCV4.9IDE:Visual Studio Code编程语言&#xff1a;C11 功能描述 掩模图像&#xff08;Mask Image&#xff09;是一种特殊类型的形象数据&#xff0c;在图像处理和计算机视觉中扮演着重要角色。它通常是一个二维数组…

Java面试问题(一)

一.Java语言具有的哪些特点 1.Java是纯面向对象语言&#xff0c;能够直接反应现实生活中的对象 2.具有平台无关性&#xff0c;利用Java虚拟机运行字节码文件&#xff0c;无论是在window、Linux还是macOS等其他平台对Java程序进行编译&#xff0c;编译后的程序可在其他平台上运行…

HuatuoGPT2本地运行失败

transformer 版本不能太高 transformer<4.3.32 查看config.json文件 其实 https://huggingface.co/FreedomIntelligence/HuatuoGPT2-7B/blob/main/config.json

2024年03月Python六级真题+答案(中国电子学会 )

青少年软件编程&#xff08;Python&#xff09;等级考试试卷&#xff08;六级&#xff09; 分数&#xff1a;100 题数&#xff1a;38 一、单选题(共25题&#xff0c;共50分) 1.以下选项中&#xff0c;创建类正确的是&#xff1f;&#xff08; &#xff09; A. class test1…

利用opencv自带的Haar级联分类器模型

OpenCV自带的Haar级联分类器模型&#xff1a; haarcascade_eye.xml: 这个模型用于检测眼睛。 haarcascade_eye_tree_eyeglasses.xml: 这个模型用于检测眼镜。 haarcascade_frontalcatface.xml: 这个模型用于检测猫脸。 haarcascade_frontalcatface_extended.xml: 这个模型用…