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

Python:列表、元组、集合、字典,数据类型之间的 5 个差异

Python:列表、元组、集合、字典,数据类型之间的 5 个差异

  • 1. 相同点
  • 2. 不同点
    • 2.1 排序
    • 2.2 索引
    • 2.3 可变性
    • 2.5 允许的类型
    • 2.4 允许重复
  • 源码

这篇博客将介绍列表、元组、集合、字典(lists, tuples, sets, and dictionaries)数据类型的5个差异;包括:order排序、index索引、 Mutability可变性、Duplicates Allowed允许重复、Types Allowed 允许的类型

1. 相同点

  • 都可以存储多个值,唯一差别是括起来的特殊符号

2. 不同点

五个关键差异使每种数据类型都以某种方式有所帮助。差异基于:-order排序、index索引、 Mutability可变性、Duplicates Allowed允许重复、Types Allowed 允许的类型。

2.1 排序

列表、元组和字典是有序的。 set是无序的。 注意:Python 3.7 之前的字典是无序的。

2.2 索引

从一组元素中访问单个元素称为索引。可以使用方括号并在其中提及索引值(从 0 开始)来完成索引。索引指定数据类型是否可以索引。

列表和元组可以建立索引。 set无法建立索引。 字典的键类似于索引。

2.3 可变性

可变性指定数据类型的值最初是否可以修改。它将数据类型分为可变和不可变。

列表、set和字典是可变的并且可以修改。元组是不可变的并且不能被修改。
注意:set值不能修改。但可以添加或删除值。由于同一内存位置发生更改,它仍然被认为是可变的。
字典的值是可变的,key是不可变的,但可以增加删除key;

2.5 允许的类型

某些数据类型允许可变值和不可变值,但某些类型仅允许其中的不可变值。数据类型可以基于此进行分类。

2.4 允许重复

另一个关键区别是检查类型是否允许重复其元素。

列表和元组允许重复值。 set不允许重复值。如果尝试输入重复项,它将只接受一个值并忽略重复项。
字典允许在其值中出现重复项,但不允许在其键中出现重复项。键必须是唯一的。
列表和元组允许可变和不可变值。 set只允许不可变的值。一个set甚至不能包含另一个set。
字典只允许键中存在不可变类型。字典值可以是可变的和不可变的。

源码

# lists, tuples, sets, and dictionaries差别
# python python_collections.py# 1. 都可以存储多个值,唯一差别是括起来的特殊符号
# 2. 主要差异 五个关键差异使每种数据类型都以某种方式有所帮助。差异基于:-order排序、index索引、 Mutability可变性、Duplicates Allowed允许重复、Types Allowed 允许的类型。def printA(li, tp, st, di):print(li)print(tp)print(st)print(di)print()li = [1, 2, 3, 4]  # Lists use []
tp = (1, 2, 3, 4)  # Tuples use ()
st = {1, 2, 3, 4}  # Sets use {}
di = {1: 10, 2: 20}  # Dictionaries use {} but contain key:value pairs
printA(li, tp, st, di)## 2.1 排序:列表、元组和字典是有序的。 set是无序的。 注意:Python 3.7 之前的字典是无序的。
li = ['A', 'B', 'C']
tp = ('A', 'B', 'C')
st = {'A', 'B', 'C'}
di = {'A': 10, 'B': 20, 'C': 30}
printA(li, tp, st, di)## 2.2 索引:从一组元素中访问单个元素称为索引。可以使用方括号并在其中提及索引值(从 0 开始)来完成索引。索引指定数据类型是否可以索引。列表和元组可以建立索引。 set无法建立索引。 字典可以设置键,因为它们有键和值。但它类似于索引。
li = ['A', 'B', 'C']
tp = ('A', 'B', 'C')
di = {'A': 10, 'B': 20, 'C': 30}print(li[0])
print(tp[1])
print(di['C'])## 2.3 可变性 可变性指定数据类型的值最初是否可以修改。它将数据类型分为可变和不可变。 列表、set和字典是可变的并且可以修改。元组是不可变的并且不能被修改。 注意:set值不能修改。但可以添加或删除值。由于同一内存位置发生更改,它仍然被认为是可变的。
# 可变类型
li = ['A', 'B', 'C']
li[0] = 'D'print(li)# 不可变类型
tp = ('A', 'B', 'C')
# tp[0] = 'D'
# TypeError: 'tuple' object does not support item assignment## 2.4 允许重复 另一个关键区别是检查类型是否允许重复其元素。 列表和元组允许重复值。 set不允许重复值。如果您尝试输入重复项,它将只接受一个值并忽略重复项。 字典允许在其值中出现重复项,但不允许在其键中出现重复项。键必须是唯一的。
li = ['A', 'B', 'C', 'A']
tp = ('A', 'B', 'C', 'A')
st = {'A', 'B', 'C', 'A'}
di = {'A': 10, 'B': 20, 'C': 10}printA(li, tp, st, di)# 使用相同的key取最后一个设置的值
di = {'A': 10, 'B': 20, 'A': 20}
print(di)## 2.5 允许的类型 某些数据类型允许可变值和不可变值,但某些类型仅允许其中的不可变值。数据类型可以基于此进行分类。
# 列表和元组允许可变和不可变值。 set只允许不可变的值。这意味着由于其可变性,一个set甚至不能包含另一个set。字典只允许键中存在不可变类型。字典值可以是可变的和不可变的。
li = [(30, 40), [10, 20]]
tp = ((30, 40), [10, 20])print(li)
print(tp)# set不可变,但可以插入/移除元素;
# 该错误表明set不可散列unhashable。所有不可散列类型都是可变的,所有可散列类型都是不可变的。
# st = {10, 20, {30, 40}}
# print(st)
# TypeError: unhashable type: 'set'# Dict同理,值可变,key不可变;
# di = {'A': [10], [2]: 'B'}
# print(di)
# TypeError: unhashable type: 'list'

相关文章:

Python:列表、元组、集合、字典,数据类型之间的 5 个差异

Python:列表、元组、集合、字典,数据类型之间的 5 个差异 1. 相同点2. 不同点2.1 排序2.2 索引2.3 可变性2.5 允许的类型2.4 允许重复 源码 这篇博客将介绍列表、元组、集合、字典(lists, tuples, sets, and dictionaries)数据类型…...

redis学习笔记(四)

文章目录 list(数组)(1)添加子成员(2)基于索引获取列表成员(3)获取列表的切片(4)获取列表的长度(5)按索引设置值(6&#x…...

-L和-rpath-link和-rpath

知识点 现代连接器在处理动态库时将链接时路径(Link-time path)和运行时路径(Run-time path)分开,用户可以通过-L指定连接时库的路径,通过-R(或-rpath)指定程序运行时库的路径,大大提…...

chatGPT小白快速入门培训课程-001

一、前言 本文是《chatGPT小白快速入门培训课程》的第001篇文章,全部内容采用chatGPT和chatGPT开源平替软件生成。完整内容大纲详见:《chatGPT小白快速入门课程大纲》。 本系列文章,参与: AIGC征文活动 #AIGC技术创作内容征文# …...

【Linux操作系统】深入理解Linux系统编程中的传入参数、传出参数和传入传出参数

在Linux系统编程中,函数的参数扮演着至关重要的角色。参数的传递方式可以分为传入参数、传出参数和传入传出参数。本文将详细解释这三种参数的概念、特点以及如何使用它们来实现灵活和高效的函数调用和数据传递。 文章目录 1. 解释和举例1.1 传入参数(i…...

(二)结构型模式:3、过滤器模式(Filter、Criteria Pattern)(C++示例)设计模式

目录 1、过滤器模式(Filter、Criteria Pattern)含义 2、过滤器模式应用场景 3、过滤器模式主要几个关键角色 4、C实现过滤器模式的示例 1、过滤器模式(Filter、Criteria Pattern)含义 (1)过滤器模式是…...

欧拉OS 使用 CentOS 7 yum repo

一、下载CentOS的repo的yum文件 任何基于CentOS的yum的repo 的url是这样的: 但欧拉OS输出这个变量为:openEuler 20.03 (LTS-SP3) 那明显欧拉想要使用这个yum的url找不到这个版本, 所以直接讲这个变量替换为 7, Centos 7的7 然后执行&…...

C进阶(1/7)——数据在内存中的存储

目录 前言: 一.数据类型介绍 类型基本归类: 整型家族: 浮点数家族: 构造类型: ​指针类型: 空类型: 二.整型在内存中的存储 1.原码,反码,补码 2.大小端介绍 3.练…...

如何初始化Git仓库

如何将目录初始化为Git仓库 一级目录二级目录三级目录 一、准备1、安装 gh2、登录 二、初始化 Git 仓库 一级目录 二级目录 三级目录 一、准备 ​ 在这里,我们需要借助一个非常好用的工具,大家也可以参照官方文档进行阅读,下面介绍常用的…...

面试攻略,Java 基础面试 100 问(十三)

什么时候用 assert? assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。一般来说,assertion 用于保证程序最基本、关键的正确性。assertion 检查通常在开发和测试时开启。为了提高性能,在软件发布…...

将el-table中的展开列(expand)修改成slots自定义插槽

用过element-ui的有知道,展开这个箭头无法自定义,一点办法都没有,官方根本就没提供预留任何位置给你操作。 从下面图中,可以看到有两个插槽,默认插槽和表头插槽。 我们来扩展一个自定义插槽来实现我们想要的功能。…...

接入网概述

接入网概述 接入网基本概念接入网“最后一公里”解决方案数字用户线xDSL技术的发展与特点xDSL的局限性PON网络架构小结 接入网基本概念 在家里终端设备连接ONT然后进入接入网,这个接入网大概在2-20km左右,中间是通过光纤进行连接,是无源的&a…...

嵌入式要卷成下一个Java了吗?

不会! 说不会也是有自己的原因的 前几天写了一篇 Linux 和单片机的文章 不做Linux就没前途吗? 单片机容易,门槛低,无非不就是单片机技术知识点比较少,特别是面向过程式的编程也更容易掌握。嵌入式 Linux 是多任务式的&…...

项目中怎么做sql优化?

背景: 系统用着用着突然出现卡,数据加载慢。这个时候有可能是sql查询问题导致的。这个时候我们要怎么排查这个问题呢。如果排查后是sql问题的话我们应该怎么优化呢! 处理方案:第一步定位 可以开启MySQL的慢查询日志,设…...

第三章 图论 No.12欧拉回路与欧拉路径

文章目录 定义欧拉路径的性质:1123. 铲雪车边编号输出欧拉路径:1184. 欧拉回路点编号字典序最小输出欧拉路径:1124. 骑马修栅栏并查集判断有向图是否存在欧拉路径:1185. 单词游戏 定义 小学一笔画问题,每条边只经过一次…...

kubernetes(二)

文章目录 1. kubernetes常用资源1.1 deployment资源1.2 deployment升级和回滚1.3 tomcat连接mysql1.4 wordpress 2. kubernetes的附加组件2.1 kubernetes集群配置dns服务2.2 kubernetes的dns配置文件2.3 namespace命名空间2.4 kubernetes健康检查2.4.1 健康检查livenessprobo2.…...

MATLAB算法实战应用案例精讲-【深度学习】预训练模型ELECTRAPerformer

目录 ELECTRA 1.介绍 2.模型结构 2.1 Replaced Token Detection 2.2 权重共享 2.3 更小的生成器 3...

微服务05-Sentinel流量防卫兵

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以 流量 为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 S…...

【考研数学】概率论与数理统计 | 第一章——随机事件与概率(1)

文章目录 一、随机试验与随机事件1.1 随机试验1.2 样本空间1.3 随机事件 二、事件的运算与关系2.1 事件的运算2.2 事件的关系2.3 事件运算的性质 三、概率的公理化定义与概率的基本性质3.1 概率的公理化定义3.2 概率的基本性质 写在最后 一、随机试验与随机事件 1.1 随机试验 …...

【设计模式】建造者模式

建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。 介绍 …...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

Java面试专项一-准备篇

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

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...