当前位置: 首页 > 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应用到微服务架构,容器都在发挥着其独特的作用。那么,什么…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...