当前位置: 首页 > news >正文

Python3 元组、列表、字典、集合小结

前言

本文主要对Python中的元组、列表、字典、集合进行小结,主要内容包括知识点回顾、异同点、使用场景。

文章目录

  • 前言
  • 一、知识点回顾
    • 1、列表(List)
    • 2、 元组(Tuple)
    • 3、 字典(Dictionary)
    • 4.、集合(Set)
  • 二、异同点
    • 1、异构性
    • 2、可变性
    • 3、有序性
    • 4、可迭代性
  • 三、使用场景
    • 1、列表(List)
    • 2、元组(Tuple)
    • 3、字典(Dictionary)
    • 4、集合(Set)

一、知识点回顾

Python 中的元组、列表、字典、集合都是用来存储多个数据元素的容器类型。

1、列表(List)

列表是可变的,可以通过索引访问和修改元素,以逗号分隔值用方括号 [] 括起来实现。列表中的元素可以是不同数据类型的,可以通过追加、插入、删除等操作进行修改。常见的操作如下:

my_list = [1, 'hello', True]my_list[0] = 2 #索引修改
my_list.append('world')   #追加
my_list.insert(1, 'goodbye')   #在制定位置之前插入
my_list.remove('hello')   #删除制定值的元素,也可以是指定下标
print(my_list)

输出结果:

[2, 'goodbye', True, 'world']

2、 元组(Tuple)

元组是不可变的,可以通过索引访问元素,其值用逗号分隔值用小括号 () 实现。元组元素不能更改,因此在创建后不能添加、删除或修改。常见的操作如下:

my_tuple = (1, 'hello', True)print(my_tuple[1])   #索引
print(my_tuple[0:2])   #切片

输出结果:

hello
(1, 'hello')

3、 字典(Dictionary)

字典是一个使用键-值对存储的可变数据类型,用大括号 {} 括起来,键值对之间用冒号 : 分隔,键值对之间用逗号分隔。常见的操作如下:

my_dict = {'a': 1, 'b': 2, 'c': 3}print(my_dict['b'])   #通过键来访问值
my_dict['a'] = 9    #通过键来修改值
print(my_dict)

输出结果:

2
{'a': 9, 'b': 2, 'c': 3}

4.、集合(Set)

集合是用于保存一组唯一元素的容器类型,用大括号 {} 或 set() 构造,不支持索引操作。集合中的元素不重复,可以进行交、并、差等集合操作。常见的操作如下:

my_set1 = {1, 2, 3}
my_set2 = {3, 4, 5}print(my_set1 & my_set2)   #求交集
print(my_set1 | my_set2)   #求并集
print(my_set1 - my_set2)   #求差集
print(my_set1 ^ my_set2)   #求对称差集

输出结果:

{3}
{1, 2, 3, 4, 5}
{1, 2}
{1, 2, 4, 5}

二、异同点

1、异构性

元组、列表、字典都可以包含不同类型的元素,比如整数、浮点数、字符串等。集合要求元素类型必须是不可变的,否则会引发 TypeError 错误,如:

my_list = [1, 1.5, 'hello', (1, 2, 3), [4, 5, 6]]
my_tuple = (1, 1.5, 'hello', (1, 2, 3), [4, 5, 6])
my_dict = {'a': 1, 'b': 1.5, 'c': 'hello','d':(1, 2, 3),'e':[4, 5, 6]}  
my_set = {1, 1.5, 'hello', (1, 2, 3), frozenset([4, 5, 6]) }
# my_set = {1, 1.5, 'hello', (1, 2, 3), [4, 5, 6] }   #会报错,必须要用frozenset()函数将数据类型转换为不可变数据类型print(my_list)
print(my_tuple)
print(my_dict)
print(my_set)

输出结果:

[1, 1.5, 'hello', (1, 2, 3), [4, 5, 6]]
(1, 1.5, 'hello', (1, 2, 3), [4, 5, 6])
{'a': 1, 'b': 1.5, 'c': 'hello', 'd': (1, 2, 3), 'e': [4, 5, 6]}
{1, 1.5, (1, 2, 3), 'hello', frozenset({4, 5, 6})}

集合内部使用哈希表来实现,每一个不同的数据元素都有一个唯一的哈希值,通过哈希值来对集合元素进行快速的查找和操作。由于哈希表的实现方式是通过键(key)来实现的,因此要求集合中的元素必须是可散列的,即每个元素必须有一个唯一的哈希值,否则将会引发 TypeError 错误。

2、可变性

可变性是指容器中的元素是否可以被修改,比如增加、修改、删除等。元组是不可变数据类型,列表、字典、集合都是可变数据类型,如:

my_list = [1, 2, 3]
my_tuple = (1, 2, 3)
my_dict = {'a': 1, 'b': 2, 'c': 2}
my_set = {1, 2, 3 }my_list.append(4)
my_dict['d'] = 4
my_set.add(4)
#my_tuple 元组中的数据是不可变的print(my_list)
print(my_dict)
print(my_set)

输出结果:

[1, 2, 3, 4]
{'a': 1, 'b': 2, 'c': 2, 'd': 4}
{1, 2, 3, 4}

3、有序性

元组、列表都是有序的,可以通过索引下标来访问元素,字典在python3.7版本以上的输出顺序通常是稳定,但是我们不能认为它是有序的,它不可以通过下标来索引,但是可以通过键来访问或修改,集合是无序的数据类型,不支持索引,如:

my_list = [1, 2, 3]
my_tuple = (1, 2, 3)
my_dict = {'a': 1, 'b': 2, 'c': 2}
my_set = {1, 2, 3 }print(my_list[1])
print(my_tuple[1])
print(my_dict['b'])
#print(my_set[1])   #会引发 TypeError 错误

输出结果:

2
2
2

4、可迭代性

元组、列表、字典、集合都是支持遍历的。

my_list = [1, 2, 3]
my_tuple = (1, 2, 3)
my_dict = {'a': 1, 'b': 2, 'c': 2}
my_set = {1, 2, 3 }print('my_list遍历输出:', end='')
for i in my_list:
print(i ,' ' , end='')
print()print('my_tuple遍历输出:', end='')
for i in my_tuple:
print(i ,' ' , end='')
print()print('my_dict遍历输出:', end='')
for i in my_tuple:
print(i ,' ' , end='')
print()print('my_set遍历输出:', end='')
for i in my_tuple:
print(i ,' ' , end='')
print()

输出结果:

my_list遍历输出:1  2  3  
my_tuple遍历输出:1  2  3  
my_dict遍历输出:1  2  3  
my_set遍历输出:1  2  3  

三、使用场景

1、列表(List)

列表是可变、异构、有序的多元素类型容器,列表在Python中使用非常广泛,常见的使用场景包括:
1)存储有序序列数据,如待处理的任务列表、音乐播放列表等;
2) 作为其他数据结构的底层实现,如队列、堆栈等;
3)存储一组同类型的数据,如学生的成绩列表、历史行情数据列表等。

2、元组(Tuple)

元组是不可变的,因此常见的场景包括:
1)存储一组常量数据或常量配置项;
2) 作为字典的键;
3)作为函数的参数和返回值。

3、字典(Dictionary)

字典是可变、异构的多元素类型容器,字典在Python中也是非常常用的数据结构,常见的使用场景包括:
1) 存储关联关系数据,如学生的成绩记录、词典等;
2)存储对象的属性和属性值,如JSON、YAML等数据格式;
3)作为配置文件的存储格式。

4、集合(Set)

集合是用于存储一组唯一元素的数据结构,因此常见的使用场景包括:
1)去除重复元素,如活动报名时的重复报名检查;
2)求两个列表或数据之间的交、并、差等操作;
3)存储不重复的数据,如爬虫任务队列中URL的去重等。

相关文章:

Python3 元组、列表、字典、集合小结

前言 本文主要对Python中的元组、列表、字典、集合进行小结,主要内容包括知识点回顾、异同点、使用场景。 文章目录 前言一、知识点回顾1、列表(List)2、 元组(Tuple)3、 字典(Dictionary)4.、…...

2024会声会影破解免费序列号,激活全新体验!

会声会影2024序列号注册码是一款专业的视频编辑软件,它以其强大的功能和易用性受到了广大用户的喜爱。在这篇文章中,我将详细介绍会声会影2024序列号注册码的功能和特色,帮助大家更好地了解这款产品。 会声会影全版本绿色安装包获取链接&…...

机器学习18个核心算法模型

1. 线性回归(Linear Regression) 用于建立自变量(特征)和因变量(目标)之间的线性关系。 核心公式: 简单线性回归的公式为: , 其中 是预测值, 是截距, 是斜…...

平滑值(pinghua)

平滑值 题目描述 一个数组的“平滑值”定义为:相邻两数差的绝对值的最大值。 具体的,数组a的平滑值定义为 f ( a ) m a x i 1 n − 1 ∣ a i 1 − a i ∣ f(a)max_{i1}^{n-1}|a_{i1}-a_i| f(a)maxi1n−1​∣ai1​−ai​∣ 现在小红拿到了一个数组…...

使用matplotlib绘制折线条形复合图

使用matplotlib绘制折线条形复合图 介绍效果代码 介绍 在数据可视化中,复合图形是一种非常有用的工具,可以同时显示多种数据类型的关系。在本篇博客中,我们将探讨如何使用 matplotlib 库来绘制包含折线图和条形图的复合图。 效果 代码 imp…...

云计算中网络虚拟化的核心组件——NFV、NFVO、VIM与VNF

NFV NFV(Network Functions Virtualization,网络功能虚拟化),是一种将传统电信网络中的网络节点设备功能从专用硬件中解耦并转换为软件实体的技术。通过运用虚拟化技术,NFV允许网络功能如路由器、防火墙、负载均衡器、…...

# SpringBoot 如何让指定的Bean先加载

SpringBoot 如何让指定的Bean先加载 文章目录 SpringBoot 如何让指定的Bean先加载ApplicationContextInitializer使用启动入口出注册配置文件中配置spring.factories中配置 BeanDefinitionRegistryPostProcessor使用 使用DependsOn注解实现SmartInitializingSingleton接口使用P…...

家用洗地机哪个品牌好?洗地机怎么选?这几款全网好评如潮

如今,人们家里越来越多的智能清洁家电,小到吸尘器、电动拖把,大到扫地机器人、洗地机,作为一个用过所有这些清洁工具的家庭主妇,我觉得最好用的还是洗地机。它的清洁效果比扫地机器人更好,功能也比吸尘器更…...

iOS与前端:深入解析两者之间的区别与联系

iOS与前端:深入解析两者之间的区别与联系 在数字科技高速发展的今天,iOS与前端技术作为两大热门领域,各自在移动应用与网页开发中扮演着不可或缺的角色。然而,这两者之间究竟存在哪些差异与联系呢?本文将从四个方面、…...

SpringBoot 基于jedis实现Codis高可用访问

codis与redis的关系 codis与redis之间关系就是codis是基于多个redis实例做了一层路由层来进行数据的路由,每个redis实例承担一定的数据分片。 codis作为开源产品,可以很直观的展示出codis运维成本低,扩容平滑最核心的优势. 其中&#xff0…...

力扣108. 将有序数组转换为二叉搜索树

108. 将有序数组转换为二叉搜索树 - 力扣(LeetCode) 找割点,一步一步将原数组分开。妙极了!!!!! /*** Definition for a binary tree node.* public class TreeNode {* int val;…...

人工智能机器学习系统技术要求

一 术语和定义 1.1机器学习系统 machinelearningsystem 能运行或用于开发机器学习模型、算法和相关应用的软件系统。 1.2机器学习框架 machinelearningframework 利用预先构建和优化好的组件集合定义模型,实现对机器学习算法封装、数据调用处理和计算资源使用的软件库。 1…...

学习整理使用JavaScript中如何判断变量是否存在的四种常用方法

学习整理使用JavaScript中如何判断变量是否存在的四种常用方法 前言1. 使用 typeof 运算符判断变量类型2. 使用全局对象 window 或 global 判断变量是否存在3. 使用 in 关键字判断变量是否存在4. 使用 try…catch 块判断变量是否存在5. 综合示例总结 前言 在 JavaScript 中&am…...

docker实现jenkins+git+naocas一体化自动部署

一、jenkins安装 1.1 docker 安装jenkins docker pull jenkins/jenkins 1.2 docker 启动jenkins docker run --name myjenkins -d -p 8081:8080 -p 8085:8085 jenkins/jenkins –name 指定容器名称为myjenkins -d 表示后台运行 -p 8081:8080 表示Docker Host(运行Do…...

Flutter 中的 PerformanceOverlay 小部件:全面指南

Flutter 中的 PerformanceOverlay 小部件:全面指南 Flutter 是一个由 Google 开发的跨平台 UI 框架,它允许开发者使用 Dart 语言构建高性能、美观的应用。在 Flutter 的开发过程中,性能监控是一个重要的方面。PerformanceOverlay 是 Flutter…...

es的总结

es的collapse es的collapse只能针对一个字段聚合(针对大数据量去重),如果以age为聚合字段,则会展示第一条数据,如果需要展示多个字段,需要创建新的字段,如下 POST testleh/_update_by_query {…...

React常见的一些坑

文章目录 两个基础知识1. react的更新问题, react更新会重新执行react函数组件方法本身,并且子组件也会一起更新2. useCallback和useMemo滥用useCallback和useMemo要解决什么3. react的state有个经典的闭包,导致拿不到最新数据的问题.常见于useEffect, useMemo, useCallback4. …...

Java基础29(编码算法 哈希算法 MD5 SHA—1 HMac 算法 堆成加密算法)

目录 一、编码算法 1. 常见编码 2. URL编码 3. Base64编码 4. 小结 二、哈希算法 1. 哈希碰撞 2. 常用哈希算法 MD5算法 SHA-1算法 自定义HashTools工具类 3. 哈希算法的用途 校验下载文件 存储用户密码 4. 小结 三、Hmac算法 小结: 四、对称加密…...

人脸识别——OpenCV

人脸识别 创建窗口创建按钮设置字体定义标签用于显示图片选择并显示图片检测图片中的人脸退出程序返回主界面 创建窗口 导入tkinter库,创建窗口,设置窗口标题和窗口大小。 import tkinter as tkwin tk.Tk() win.title("人脸识别") win.geom…...

深入探索容器:什么是容器及其在现代软件开发中的作用

深入探索容器:什么是容器及其在现代软件开发中的作用 引言 在今天的软件开发和运维领域,容器技术已经成为了一个不可或缺的工具。从初创企业到大型企业,从Web应用到微服务架构,容器都在发挥着其独特的作用。那么,什么…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...