Python语法详解module3(组合数据类型列表、元组、字典、集合详细用法)

在这里插入图片描述

目录

  • 一、列表
    • 列表的创建
    • 多维列表
    • 列表的访问和修改
    • 列表的添加和删除
    • 列表的遍历
      • 使用 for 循环遍历
      • 使用 while 循环遍历
      • 同时遍历索引和元素
      • 列表推导式
    • 常用的列表函数
      • len()
      • sort()
      • reverse()
      • index()
      • count()
      • extend()
      • clear()
  • 二、元组
    • 创建元组
    • 访问元组元素
    • 元组的不可变性
    • 元组的优点
    • 元组的应用场景
  • 三、字典
    • 创建字典
    • 访问字典元素
    • 添加或修改元素
    • 删除元素
    • 字典的遍历
    • 字典的常用方法
  • 四、集合
    • 创建集合
    • 集合的特点
    • 访问集合元素
    • 修改集合
    • 集合的常用操作
    • 集合的应用场景

一、列表

  • 列表是 Python 中最常用的数据结构之一,它是一个有序的集合,可以包含任何数据类型的元素,如整数、浮点数、字符串等。
  • 列表使用方括号 [ ] 表示,各元素之间用逗号 , 分隔。
  • 列表中的元素可以通过索引访问,并且列表是可变的,即可以修改、添加或删除其中的元素。

列表的创建

在Python中,列表可以通过以下方式来创建:

# 创建一个空列表
my_list = []# 创建一个带有初始元素的列表
my_list = [1, 2, 3, 4, 5]my_list = [1, 'a', 2.3]   # 一个包含整数、字符串和浮点数的列表# 创建一个包含其他列表的列表(嵌套列表)
nested_list = [[1, 2], [3, 4], [5, 6]]

多维列表

  • 多维列表通常被称为嵌套列表,它是列表中包含其他列表的列表。
  • 这种嵌套结构使得 Python 的列表能够灵活地表示多维数据结构,例如矩阵、数组等。
# 创建一个二维列表(3x3矩阵)
matrix = [[1, 2, 3],[4, 5, 6],[7, 8, 9]]# 访问列表元素
print(matrix[0][0])  # 输出:1
print(matrix[1][2])  # 输出:6
print(matrix[2][1])  # 输出:8# 修改列表元素
matrix[1][1] = 10
print(matrix[1][1])  # 输出:10# 添加新的列表
new_row = [11, 12, 13]
matrix.append(new_row)
print(matrix)  # 输出:[[1, 2, 3], [4, 10, 6], [7, 8, 9], [11, 12, 13]]

列表的访问和修改

  • 访问列表中的元素可以使用索引,索引从0开始,可以使用负数索引从末尾开始计数。
my_list = [1, 2, 3, 4, 5]# 访问列表元素
print(my_list[0])  # 输出: 1
print(my_list[-1])  # 输出: 5# 修改列表元素
my_list[0] = 10
print(my_list)  # 输出: [10, 2, 3, 4, 5]

列表的添加和删除

  • 向列表中添加元素可以使用 append() 方法,删除元素可以使用 remove() 方法或 pop() 方法。
    在这里插入图片描述

在这里插入图片描述

my_list = [1, 2, 3, 4, 5]# 添加元素
my_list.append(6)
print(my_list)  # 输出: [1, 2, 3, 4, 5, 6]# 删除元素
my_list.remove(3)  # 删除值为3的元素
print(my_list)  # 输出: [1, 2, 4, 5, 6]popped_element = my_list.pop(2)  # 删除索引为2的元素
print(popped_element)  # 输出: 4
print(my_list)  # 输出: [1, 2, 5, 6]

列表的遍历

使用 for 循环遍历

my_list = [1, 2, 3, 4, 5]
for item in my_list:print(item)

使用 while 循环遍历

my_list = [1, 2, 3, 4, 5]
index = 0
while index < len(my_list):print(my_list[index])index += 1

同时遍历索引和元素

有时候可能需要同时访问元素和其索引,可以使用 enumerate() 函数来实现:

my_list = [1, 2, 3, 4, 5]
for index, item in enumerate(my_list):print(index, item)

列表推导式

列表推导式是一种更为简洁的方式来遍历列表和对列表进行操作:

my_list = [1, 2, 3, 4, 5]
# 将每个元素加倍
doubled_list = [item * 2 for item in my_list]
print(doubled_list)

常用的列表函数

len()

len() 函数返回列表中元素的个数。

my_list = [1, 2, 3, 4, 5]
print(len(my_list))  # 输出: 5

sort()

sort() 方法用于对列表进行排序。

my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
my_list.sort()
print(my_list)  # 输出: [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

在这里插入图片描述

reverse()

reverse() 方法用于颠倒列表中的元素顺序。

my_list = [1, 2, 3, 4, 5]
my_list.reverse()
print(my_list)  # 输出: [5, 4, 3, 2, 1]

index()

index() 方法用于返回指定元素的索引。

my_list = ['apple', 'banana', 'cherry', 'apple']
print(my_list.index('banana'))  # 输出: 1

count()

  • count() 方法用于返回指定元素在列表中出现的次数。
my_list = [1, 2, 2, 3, 3, 3]
print(my_list.count(3))  # 输出: 3

extend()

  • extend() 方法用于将另一个列表的元素添加到当前列表。
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list1.extend(list2)
print(list1)  # 输出: [1, 2, 3, 4, 5, 6]

clear()

  • clear() 方法用于清空列表中的所有元素。
my_list = [1, 2, 3, 4, 5]
my_list.clear()
print(my_list)  # 输出: []

在这里插入图片描述


二、元组

  • 元组(tuple)类似于列表,但是元组是不可变的,意味着一旦创建,其内容就不能被修改、添加或删除。
  • 元组用圆括号 () 来表示。

创建元组

可以使用逗号 , 将多个元素组合在一起来创建元组,也可以使用圆括号 () 将元素括起来来创建元组。

# 使用逗号
my_tuple = 1, 2, 3, 4, 5
print(my_tuple)  # 输出: (1, 2, 3, 4, 5)# 使用圆括号
my_tuple = (1, 2, 3, 4, 5)
print(my_tuple)  # 输出: (1, 2, 3, 4, 5)

在这里插入图片描述

访问元组元素

可以使用索引来访问元组中的元素,索引从0开始。

my_tuple = (1, 2, 3, 4, 5)
print(my_tuple[0])  # 输出: 1
print(my_tuple[2])  # 输出: 3

元组的不可变性

元组是不可变的,这意味着你不能修改元组中的元素,也不能向元组中添加或删除元素。

my_tuple = (1, 2, 3)
my_tuple[0] = 5  # 会抛出 TypeError: 'tuple' object does not support item assignment

元组的优点

  • 不可变性(Immutable):元组的内容在创建后不能被修改,这样可以保证数据的安全性和稳定性。
  • 性能:由于元组的不可变性,Python 可以对元组进行一些优化,使其在某些情况下比列表更快。

元组的应用场景

  • 函数返回值:函数可以返回多个值,这些值可以使用元组来返回。
  • 不可变的键:元组可以作为字典的键,而列表不能,因为字典的键必须是不可变的。
# 函数返回值
def get_point():return 10, 20x, y = get_point()
print(x, y)  # 输出: 10 20# 不可变的键
my_dict = {(1, 2): 'value'}
print(my_dict[(1, 2)])  # 输出: value

元组是一种简单但强大的数据结构,可以用于安全地存储和传递数据,特别是在需要不可变性和性能方面。


三、字典

  • 字典(dictionary)是一个无序、可变、以键值对形式存储数据的集合。
  • 每个键值对都由一个键和一个与之相关联的值组成。
  • 在字典中,键必须是唯一的,而值可以是任意类型的对象。
  • 字典用花括号 {} 来表示,每个键值对之间使用逗号 , 分隔。

创建字典

# 创建空字典
my_dict = {}# 创建带有初始键值对的字典
my_dict = {'name': 'yushifu', 'age': 23, 'city': 'Beijing'}

访问字典元素

可以通过键来访问字典中的值。

my_dict = {'name': 'yushifu', 'age': 25, 'city': 'Beijing'}
print(my_dict['name'])  # 输出: yushifu
print(my_dict['age'])   # 输出: 23

添加或修改元素

可以通过给指定的键赋值的方式向字典中添加新的键值对,如果该键已经存在,则会修改对应的值。

my_dict = {'name': 'yushifu', 'age': 23, 'city': 'Beijing'}
my_dict['gender'] = 'male'  # 添加新的键值对
my_dict['age'] = 26  # 修改已有键的值

删除元素

可以使用 del 关键字来删除字典中的键值对,也可以使用 pop() 方法来删除指定键并返回其对应的值。

my_dict = {'name': 'yushifu', 'age': 23, 'city': 'Beijing'}
del my_dict['age']  # 删除键为 'age' 的键值对
age = my_dict.pop('age')  # 删除键为 'age' 的键值对,并返回值

字典的遍历

可以通过循环来遍历字典中的键值对。

my_dict = {'name': 'yushifu', 'age': 23, 'city': 'Beijing'}
for key, value in my_dict.items():print(key, value)

字典的常用方法

  • keys():返回字典中所有的键。
  • values():返回字典中所有的值。
  • items():返回字典中所有的键值对。
my_dict = {'name': 'yushifu', 'age': 23, 'city': 'Beijing'}
print(my_dict.keys())   # 输出: dict_keys(['name', 'age', 'city'])
print(my_dict.values())  # 输出: dict_values(['yushifu', 23, 'Beijing'])
print(my_dict.items())   # 输出: dict_items([('name', 'yushifu'), ('age', 23), ('city', 'Beijing')])

字典适合用于存储和操作具有键值对关系的数据。


四、集合

  • Python中的集合(set)是一种无序且不重复的元素集,类似数学中的集合概念。
  • 集合可以用于去重、判断成员关系等操作。
  • 集合使用花括号 {} 来表示,元素之间使用逗号 , 分隔。

创建集合

  • 可以使用花括号 {} 来创建集合。
  • 也可以使用 set() 函数来创建一个空集合或从其他可迭代对象中创建集合。
# 创建空集合
my_set = set()# 从列表中创建集合
my_set = set([1, 2, 3, 4, 5])# 直接创建集合
my_set = {1, 2, 3, 4, 5}

集合的特点

  • 无序性:集合中的元素没有顺序,不能通过索引访问。
  • 唯一性:集合中的元素是唯一的,不存在重复元素。

访问集合元素

由于集合是无序的,不能通过索引来访问元素。可以使用循环或者转换为列表来访问集合中的元素。

my_set = {1, 2, 3, 4, 5}
for item in my_set:print(item)# 将集合转换为列表
my_list = list(my_set)
print(my_list)  # 输出: [1, 2, 3, 4, 5]

修改集合

由于集合的元素是不可变的,不能直接修改集合中的元素。但是可以添加新的元素或者删除已有的元素。

my_set = {1, 2, 3}
my_set.add(4)  # 添加元素
my_set.remove(2)  # 移除元素

集合的常用操作

  • 并集、交集、差集:可以使用集合操作符 |&- 来执行集合的并集、交集和差集操作。
  • 成员关系判断:可以使用 innot in 来判断元素是否在集合中。
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}# 并集
union_set = set1 | set2  # 输出: {1, 2, 3, 4, 5, 6}
# 交集
intersection_set = set1 & set2  # 输出: {3, 4}
# 差集
difference_set = set1 - set2  # 输出: {1, 2}
# 成员关系判断
print(2 in set1)  # 输出: True
print(5 not in set1)  # 输出: True

集合的应用场景

  • 去重:通过集合可以快速实现对列表等可迭代对象的去重操作。
  • 成员关系判断:可以高效地判断一个元素是否包含在集合中。
  • 集合运算:可以方便地进行集合的并集、交集、差集等操作。

在这里插入图片描述

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

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

相关文章

Scalable Diffusion Models with Transformers

Metahttps://github.com/facebookresearch/DiT/tree/main?tabreadme-ov-file 问题引入 transformer架构的latent diffusion model&#xff0c;有较好的延展性并是sota&#xff1b; methods patchify&#xff1a;原图片 I ∈ R H W 3 I\in\mathbb{R}^{H\times W\times 3…

【微信小程序】模板语法

数据绑定 对应页面的 js 文件中 定义数据到 data 中&#xff1a; 在页面中使用 {{}} 语法直接使用&#xff1a; 事件绑定 事件触发 常用事件&#xff1a; 事件对象的属性列表&#xff08;事件回调触发&#xff0c;会收到一个事件对象 event&#xff0c;它的详细属性如下&…

免费,C++蓝桥杯等级考试真题--第10级(含答案解析和代码)

C蓝桥杯等级考试真题--第10级 答案&#xff1a;D 解析&#xff1a;数组是一种线性数据结构&#xff0c;其特点是数组中的元素在内存中占据一段连续的存储空间&#xff0c;每个元素通过索引&#xff08;下标&#xff09;访问&#xff0c;索引起始通常是0。 数组的长度在声明时…

操作符详解

一、移位操作符 1.1左移操作 左边丢弃&#xff0c;右边补0 1.2右移操作 算数右移&#xff1a;右边丢弃&#xff0c;左边补原符号位 逻辑右移&#xff1a;右边丢弃&#xff0c;左边补0 int main() {int a -1;int b a >> 1;printf("b%d\n",b);return 0; } 原码…

厘米级精确定位,开启定位技术新时代

定位技术在当前这个科技发展时代可以说是以以前所未有的速度在发展&#xff0c;其中厘米级精确定位技术更是成为当前的研究热点和实际应用中的佼佼者。这项技术以其高度的精准性和广泛的应用前景&#xff0c;正在逐渐改变我们的生活和工作方式。接下来我们跟着深圳沧穹科技一起…

在vue项目中使用markdown-it回显markdown文本

前言 其实有很多插件都是可以用来回显markdown文本的,这个插件也是其中之一。 文档地址:markdown-it | markdown-it 中文文档 这个文档在vue2和vue3里面都可以使用,所以还是比较推荐的 使用 安装 npm install markdown-it --save 应用 <template><div><…

微服务开发与实战Day02 - Docker

一、Docker快速入门 快速构建、运行、管理应用的工具 安装部署教程&#xff1a;Docs 1. 部署MySQL 测试连接&#xff1a; 镜像和容器 当我们利用Docker安装应用时&#xff0c;Docker会自动搜索并下载应用镜像&#xff08;image&#xff09;。镜像不仅包含应用本身&#xff…

天润融通,荣获2024中国AI应用层创新企业

AI技术发展日新月异&#xff0c;可谓“AI一天&#xff0c;人间一年”。 从2023年到2024年&#xff0c;短短一年的时间&#xff0c;大模型技术的发展就已经逐步从追求“技术突破”转向了追求“应用落地”。如何将大模型的技术与企业的生产、运营、销售等场景结合起来&#xff0…

java版CRM客户关系管理系统源码:CRM客户关系管理系统的功能详解

CRM客户关系管理系统是一款功能全面的客户管理工具&#xff0c;旨在帮助企业和销售团队提高客户管理效率&#xff0c;优化销售流程。该系统包含多个模块&#xff0c;覆盖了从线索到回款的全流程管理&#xff0c;为用户提供了一个集成化的客户关系管理平台。 一、待办事项模块&a…

Docker 部署 Redis Cluster 高性能高可用分片集群

文章目录 1、环境准备2、Cluster 集群讲解2.1、Cluster 介绍2.2、Cluster 和哨兵模式区别2.3、Cluster 如何分散存储数据 3、Cluster 搭建流程3.1、安装 Docker3.2、启动 Redis 容器3.3、创建 Cluster 集群 4、Cluster 集群测试4.1、读写操作4.2、故障转移 1、环境准备 准备6台…

基于Keil5移植LVGL,懂得原理之后什么开发板都可以移植

今天我们来移植一下LVGL&#xff0c;其实LVGL和Qt差不多&#xff0c;操作起来都很简单&#xff0c;看着官方文档都可以自己学习使用。 难就难在移植上面&#xff0c;移植个LVGL花了我三天才弄明白&#xff08;虽然最后发现在一个很弱智的问题上耽误了我两天&#xff09;&#…

oracle 打补丁遇到 check “CheckActiveFilesAndExecutables“ failed报错处理方法

该报错是因为打补丁的时候停止集群没有停止干净进程导致的 问题 处理方法 强制停止打补丁所在节点集群服务 查看grid和oracle相关进程是否停止干净&#xff0c;发现有未关闭的进程手动kill 处理完毕继续打补丁即可

跟着大佬学RE(四)

几个API函数 [ACTF新生赛2020]Universe_final_answer 一个很多方程组的函数&#xff0c;还有一个嗯&#xff0c;对input进行一些操作的函数 嗯&#xff0c;确实方程解出来得到 key 直接运行就可以得到 flag 了&#xff0c;不过还是去分析了一下。 v22 __readfsqword(0x28u);…

【深度学习】安全帽检测,目标检测,Faster RCNN训练

文章目录 资料环境尝试训练安全帽数据训练测试预测全部数据、代码、训练完的权重等资料见&#xff1a; 资料 依据这个进行训练&#xff1a; https://github.com/WZMIAOMIAO/deep-learning-for-image-processing/tree/master/pytorch_object_detection/faster_rcnn ├── bac…

nt9856_sensor_driver camera i2c无响应

前言 最新更换了不同的平台进行开发&#xff0c;所以一心在研究和学习中&#xff0c;没有太多的时间发布文章&#xff0c;最近开开始上手了&#xff0c;抽空把之前的工作记录进行总结和发布。从原来的高通和瑞芯微转到了国科和海思联咏&#xff0c;整体的架构不太一致&#xff…

【JVM】已验鼎真,鉴定为:妈妈加载的(双亲委派模型)

【JVM】已验鼎真&#xff0c;鉴定为&#xff1a;妈妈加载的&#xff08;双亲委派模型&#xff09; 在Java的世界中&#xff0c;类加载器&#xff08;ClassLoader&#xff09;是Java虚拟机&#xff08;JVM&#xff09;用来动态加载类的基础组件。双亲委派模型&#xff08;Paren…

安装和使用conda

Conda 是一个开源的软件包管理系统和环境管理系统&#xff0c;用于安装多个版本的软件包及其依赖关系&#xff0c;并在它们之间轻松切换。可以创建多个环境&#xff0c;并在环境中使用不同的python版本&#xff0c;并安装环境专属的python依赖包&#xff0c;可以用来避免python…

MySQL中:cmd下输入命令mysql -uroot -p 连接数据库错误

目录 问题cmd下输入命令mysql -uroot -p错误 待续、更新中 问题 cmd下输入命令mysql -uroot -p错误 解决 配置环境变量&#xff1a;高级系统设置——环境变量——系统变量——path编辑——新建——MySQL.exe文件路径&#xff08;如下图所示&#xff09; phpstudy2018软件下&am…

王学岗鸿蒙开发(北向)——————(二)TS基本语法详解

1&#xff0c;Ts(TypeScript)语法相当于JAVAScript类型&#xff0c;鸿蒙arkTs是基于TS语言的,当然artTs也融合了其它的语言。 2&#xff0c;本篇文章是基于n9版本。注意,有些语法是已经不能用的。 3&#xff0c; 4&#xff0c;变量:用来存储数据,数字字母组成&#xff0c;数字不…

泛微开发修炼之旅--07通过后端代码实现创建并发送待办、源码及示例

文章链接&#xff1a;泛微开发修炼之旅--07通过后端代码实现创建并发送待办、源码及示例