2:数据结构:列表与元组

news2024/9/27 9:05:19

目录

2.1 列表的创建与操作

2.1.1 列表的创建

2.1.2 列表的常用操作

2.1.3 列表切片操作

2.2 元组的特点与用法

2.2.1 元组的创建

2.2.2 元组与列表的区别

2.2.3 元组的常用操作

2.3 示例代码与练习

2.3.1 示例代码:列表与元组的基本操作

2.3.2 练习题

文章 3:数据结构:字典与集合

3.1 字典的创建与常用操作

3.1.1 字典的创建

3.1.2 字典的常用操作

3.1.3 字典的应用场景

3.2 集合的基本操作

3.2.1 集合的创建

3.2.2 集合的常用操作

3.2.3 集合的应用场景

3.3 示例代码与应用场景

3.3.1 示例代码:字典与集合的操作

3.3.2 练习题


2.1 列表的创建与操作

列表(List) 是 Python 中最常用的数据结构之一。它是一个可变的序列,支持任意类型的数据元素,可以动态调整长度。这使得列表非常适合用来存储和操作一组有序数据。

2.1.1 列表的创建

你可以通过以下几种方式创建列表:

  1. 直接创建空列表:

     
    my_list = []
    

  2. 创建包含元素的列表:

     
    my_list = [1, 2, 3, 4, 5]
    

  3. 通过 list() 函数将其他数据结构转换为列表:

     
    my_list = list("hello")
    # 结果:['h', 'e', 'l', 'l', 'o']
    

2.1.2 列表的常用操作
操作类型操作方法示例
访问元素my_list[index]my_list[0] 返回列表第一个元素
添加元素my_list.append(element)my_list.append(6) 将 6 添加到列表末尾
插入元素my_list.insert(index, element)my_list.insert(1, 'Python') 在索引1插入
删除元素my_list.remove(element)my_list.remove(3) 删除元素3
列表长度len(my_list)len(my_list) 返回列表长度
列表排序my_list.sort()my_list.sort() 对列表进行升序排序
2.1.3 列表切片操作

列表支持切片操作,可以通过指定起始和结束索引来访问部分元素:

 
my_list = [10, 20, 30, 40, 50]
sub_list = my_list[1:4]  # 结果:[20, 30, 40]

你还可以通过步长指定跳跃性访问:

 
my_list = [10, 20, 30, 40, 50, 60]
sub_list = my_list[::2]  # 结果:[10, 30, 50]

2.2 元组的特点与用法

元组(Tuple) 与列表类似,但它是不可变的,这意味着元组一旦创建,不能修改其内容。这种不可变性使得元组在需要确保数据安全或不可变的场景中非常有用。

2.2.1 元组的创建

你可以通过以下几种方式创建元组:

  1. 直接创建空元组:

     
    my_tuple = ()
    

  2. 创建包含元素的元组:

     
    my_tuple = (1, 2, 3)
    

  3. 通过 tuple() 函数将其他数据结构转换为元组:

     
    my_tuple = tuple([1, 2, 3])
    

2.2.2 元组与列表的区别
特性列表(List)元组(Tuple)
可变性可变(可以修改、添加、删除)不可变(创建后不能修改内容)
创建方式[]list()()tuple()
适用场景需要频繁修改数据的场景需要保持数据安全不可变的场景
2.2.3 元组的常用操作

尽管元组是不可变的,但仍然支持一些基本操作:

操作类型操作方法示例
访问元素my_tuple[index]my_tuple[0] 返回元组第一个元素
切片操作my_tuple[start:end]my_tuple[1:3] 返回元组部分切片
拼接元组my_tuple1 + my_tuple2将两个元组合并为一个新元组
查询元素element in my_tuple3 in my_tuple 返回是否存在
2.3 示例代码与练习
2.3.1 示例代码:列表与元组的基本操作
 
# 列表操作示例
my_list = [1, 2, 3, 4]
my_list.append(5)
print("列表内容:", my_list)

# 元组操作示例
my_tuple = (10, 20, 30)
print("元组内容:", my_tuple)

2.3.2 练习题
  1. 创建一个包含 5 个数字的列表,尝试使用 append()insert()remove() 方法对其进行修改,并打印结果。
  2. 创建一个包含 3 个元素的元组,尝试使用切片操作获取其中部分元素,并拼接另一个元组。

文章 3:数据结构:字典与集合

3.1 字典的创建与常用操作

字典(Dictionary) 是一种键值对(key-value pair)的数据结构。每个键都是唯一的,可以通过键快速访问对应的值。字典非常适合存储无序的关联数据。

3.1.1 字典的创建
  1. 直接创建空字典:

    my_dict = {}
    
  2. 创建带有键值对的字典:

    my_dict = {'name': 'Alice', 'age': 25}
    
  3. 通过 dict() 函数创建字典:

    my_dict = dict([('name', 'Alice'), ('age', 25)])
    
3.1.2 字典的常用操作
操作类型操作方法示例
访问值my_dict[key]my_dict['name'] 返回对应的值
添加或更新键值对my_dict[key] = valuemy_dict['age'] = 30 更新键为 'age' 的值
删除键值对my_dict.pop(key)my_dict.pop('name') 删除键 'name'
遍历字典for key, value in my_dict.items()遍历所有键值对
3.1.3 字典的应用场景

字典非常适合存储无序的关联数据,例如学生成绩、商品价格等。以下是一个简单的字典应用示例:

 
student_grades = {'Alice': 85, 'Bob': 92, 'Charlie': 78}
for student, grade in student_grades.items():
    print(f"{student} 的成绩是 {grade}")

3.2 集合的基本操作

集合(Set) 是一种无序、不重复的元素集合。它适合用于去重和集合运算,如交集、并集等。

3.2.1 集合的创建
  1. 直接创建空集合:

    my_set = set()
    
  2. 创建带有元素的集合:

    my_set = {1, 2, 3, 4}
    
3.2.2 集合的常用操作
操作类型操作方法示例
添加元素my_set.add(element)my_set.add(5) 将 5 添加到集合
删除元素my_set.remove(element)my_set.remove(3) 删除元素 3
并集操作my_set1.union(my_set2)返回两个集合的并集
交集操作my_set1.intersection(my_set2)返回两个集合的交集
3.2.3 集合的应用场景

集合可以用来快速去重,或进行集合运算。以下是一个使用集合进行去重的例子:

numbers = [1, 2, 3, 3, 4, 4, 5]
unique_numbers = set(numbers)
print("去重后的结果:", unique_numbers)
3.3 示例代码与应用场景
3.3.1 示例代码:字典与集合的操作
 
# 字典操作示例
my_dict = {'name': 'Alice', 'age': 25}
my_dict['age'] = 30
print("字典内容:", my_dict)

# 集合操作示例
my_set = {1, 2, 3, 4}
my_set.add(5)
print("集合内容:", my_set)

3.3.2 练习题
  1. 创建一个字典,存储 3 个学生的姓名和成绩,尝试使用 items() 方法遍历字典并打印每个学生的成绩。
  2. 创建两个集合,分别包含 5 个数字,尝试进行并集和交集操作,并打印结果。

 

 

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

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

相关文章

ICM20948 DMP代码详解(46)

接前一篇文章:ICM20948 DMP代码详解(45) 上一回讲到了inv_icm20948_setup_compass_akm函数中的以下代码片段: /* Set compass in power down through I2C SLV for compass */result inv_icm20948_execute_write_secondary(s, COM…

网口为什么叫RJ45接口,名字的由来?

大家有没有注意到很多地方“网口”都被称作“RJ45”接口。但是,您是否曾经好奇过,这个小小的插孔为何被称为“RJ-45”?这个名字背后又有着怎样的故事呢? RJ-45的全称与定义 首先,我们需要了解“RJ-45”的全称是“Regi…

jetlinks物联网平台学习3:mqtt协议及物模型

mqtt协议及物模型 1、创建产品2、配备设备接入方式3、上传消息协议4、填写网关信息5、配置mqtt认证信息6、配置物模型7、创建设备8、使用MQTT X模拟设备接入9、mqttx实现设备->平台 平台->设备 消息发送9.1、属性上报9.2、获取最新属性值(读取属性&#xff09…

EEPROM手册笔记

目录 一、特征描述二、功能描述三、总线特性四、设备寻址五、写入操作1.字节写入2.页写入 六、读取操作1.当前地址读取2.随机读取3.顺序读取 一、特征描述 1.Microchip Technology Inc. 24AA04/24LC04B (24XX04*) 是一款 4 Kbit 电气可擦除 PROM。该器件…

ChatDev:基于对话的多智能体协同软件开发框架

相关代码资源见文末 论文地址:ChatDev: Communicative Agents for Software Development - ACL Anthologyhttps://aclanthology.org/2024.acl-long.810/ 1. 概述 1.1. 当前的挑战 软件开发是一个复杂且多层次的过程,要求具备不同技能的团队成员之间密切合作。例如,架构师…

老人跌倒扶不扶?涪城三职工给出响亮答案

一、关键时刻的选择 于绵阳市三江湖湿地公园,平凡午后,三名环卫人员刘后刚、严荣礼及杨树坤正紧张作业。突闻呼救声,一位老人在石阶上跌倒需援手。在紧急关头,他们果断抛却工具,疾速赶至老人身边。此举不仅展现了他们…

了解网络的相关信息

文章目录 前言了解网络的相关信息1. ip是什么?1.1. 公网IP:1.2. 私有IP:1.2.1. 示例 2. 子网掩码3. 子网掩码的划分网段是什么4. 特殊的回路IP网段(127.0.0.1)5. 端口 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊&#x…

学习C++的第七天!

1.虚函数是在基类中用 virtual 关键字声明的函数,可以在派生类中被重写。纯虚函数是在虚函数的基础上,在基类中被初始化为 0 的函数,含有纯虚函数的类是抽象类,不能被实例化。 2.如果基类的析构函数不是虚函数,当通过…

(done TODO:从频谱到时域要考虑负频波和余弦波?) 傅里叶变换知识补充

参考:https://www.bilibili.com/video/BV1rC4y1E7FD/?vd_source7a1a0bc74158c6993c7355c5490fc600 sinx 和 sin2x sin3x 等整数倍频率的正弦波都是正交的 cosx 和 cos2x cos3x 等整数倍频率的余弦波都是正交的 这成为三角函数系的正交性 up主从分解出来的波恢复成…

buuctf [ACTF2020 新生赛]Include

学习笔记。 开启靶机。 进入靶场: 我们跟进 tips瞅瞅: 额,纯小白,能想到的就是先F12看看,在CTRLu、以及抓包。 得,不会了,看wp呗,不会死磕没脑子0,0? 参考:…

解决 Adobe 盗版弹窗

在这个文件夹下删除 Adobe CCXProcess 然后重装。 Adobe Premiere Pro 2024 (v24.6.1) Multilingual :: Варез от m0nkrusa [Warez by m0nkrus] (monkrus.ws) Adobe Photoshop 2024 (v25.12) Multilingual :: Варез от m0nkrusa [Warez by m0nkrus] (monkrus.…

FastAPI 第五课 -- 基本路由

目录 一. 前言 二. 根路径路由 三. 路径参数 四. 启动应用和测试路由 一. 前言 在 FastAPI 中,基本路由是定义 API 端点的关键。每个路由都映射到应用程序中的一个函数,用于处理特定的 HTTP 请求,并返回相应的响应。 二. 根路径路由 创…

矩阵求逆的几种方法

1. 定义 对于矩阵的运算中定义了加减法、乘法(包含数乘)但未定义矩阵除法,可以简单认为矩阵的逆即为矩阵除法。矩阵求逆是线性代数中的一个重要概念,在很多应用领域都有广泛的应用。对于一个给定的方阵 ( A ),如果存在…

全志A133开发板安卓系统调试串口复用成普通串口方法-触觉智能EVB1309

本文介绍了在开发板/主板串口接口不够的情况下,可将调试串口改为普通串口使用,下面为大家分享修改方法。基于触觉智能EVB1309开发板演示,搭载全志A133芯片,具有高性能超低功耗优势,待机功耗低至15mW。 1、内核配置 源…

FortiGate 无线组网

无线管理与配置 FortiAP 连接 internal 接口之后自动获得 ip 地址:192.168.1.xxx/24在 FortiGate 中创建 SSIDFortiGate 自动发现 FortiAP,将 FortiAP 添加到 FortiGate将 SSID 和 FortiAP 关联创建防火墙策略 下面我们就来一起看看在 FortiGate 中该如…

【HTTP 和 HTTPS详解】3

HTTP 状态代码 HTTP 状态代码是服务器发送给客户端的三位数字,用于指示客户端请求的结果。它们分为五类:信息性(100-199)、成功(200-299)、重定向(300-399)、客户端错误&#xff08…

【java笔记】 5 接口使用举例

// 导入Swing库中的消息对话框组件 import javax.swing.*; // 定义一个Circle类,该类实现了ShapeInterface接口 public class Circle implements ShapeInterface { // 定义一个私有变量radius来保存圆的半径 private double radius; // 默认构造函数,初…

第十一章 Java多线程--阻塞队列--PriorityBlockingQueue

目录 一、PriorityBlockingQueue基础概念 主要特点 常用方法 使用示例 二、PriorityBlockingQueue深入了解 1 PriorityBlockingQueue介绍 2 二叉堆结构介绍 3 PriorityBlockingQueue核心属性 4 PriorityBlockingQueue的写入操作 4.1 offer基本流程 4.2 offer扩容操作…

【伺服】Servo入坑学习记录①

前言 这是一个自我摸索的过程,如果有什么良好的、或严厉的批评和建议,恳请指教, 万分感谢经典控制理论中,有几个重要的概念和工具,用于分析和设计控制系统。以下是对 传递函数、伯德图、奈奎斯特图、稳定裕度 和 带宽 …

【Elasticsearch】-文本向量化

由于使用了QAnything 本地知识库应答平台 内部已集成Embedding 文本向量化服务,因此不在单独部署。 基于 transformers 如果需要单独部署,可以参看 BCEmbedding/README_zh.md at master netease-youdao/BCEmbedding GitHub 从启动脚本中可以看出&am…