首页 > 编程语言 >【python系列】python数据类型的分类和比较

【python系列】python数据类型的分类和比较

时间:2024-11-18 13:17:44浏览次数:3  
标签:顺序 python 分类 数据类型 无序 print 有序 类型

一、数据类型的定义

在程序设计的类型系统中,数据类型(英语:Data type),又称资料型态、资料型别,是用来约束数据的解释。——Wikipedia

从定义我们可以看出来,数字类型的理解最主要的是约束数据的解释,每个类型都有他们自己所使用得场景,这个就是数字类型的分类,分类的结果可以方便我们更好的理解。

从官网可以看到,python所使用得数字类型有很多:
在这里插入图片描述

二、数据类型的分类

短时间内掌握所有的数字类型是不现实的,如果要学习我们可以先从数字类型的分类开始学习。
怎么理解呢?我们从日常生活中出发,我们首先会想到,生活中最常接触的是语言,语言做下分类就涉及到文字和数字,分别对应得是字符串和数字类型。
再进一步,我们为了更好的理解,字符串和数字类型就涉及到做区分,又分为有序和无序,有序的数据类型分为文本序列类型、序列类型、映射类型和二进制序列类型,无序的数据类型为集合类型。还有一种类型是既不属于有序类型,又不属于无序类型,我们给它加个名称叫特殊类型,主要有以下几种数字类型、布尔类型、空类型、函数类型、迭代器与生成器、省略类型、模块与类。

有序数据类型无序数据类型特殊数据类型
字符串、序列类型、映射类型、二进制序列类型集合类型数字类型、布尔类型、空类型、函数类型、迭代器与生成器、省略类型、模块与类
str、list、tuple、range、dict、bytes, bytearray, memoryviewset、frozensetint、float、complex、bool、NoneType、function、generator、ellipsis、module、class

还涉及到很多未分类的数据类型,就又涉及到数据类型的再一次分类,我们这里暂时先不涉及,因为学习编程开发要循序渐进,先抓住重点,后面再进行了解和补充。

三、数据类型的比较

我们既然已经区分了有序数据类型、无序数据类型、特殊数据类型,那么我就需要进行比较,比较每个数据类型之间的差异。

1. 有序的数据类型

有序的数据类型是指其元素存储的顺序固定,并且能够通过索引或迭代保持这种顺序。

常见的有序数据类型

  • list(列表):可变类型,元素按插入顺序存储,支持索引访问。
lst = [1, 2, 3]
print(lst[0])  # 输出 1
  • tuple(元组):不可变类型,元素按插入顺序存储,支持索引访问。
tup = (1, 2, 3)
print(tup[0])  # 输出 1
  • str(字符串):不可变类型,字符按插入顺序存储,支持索引访问。
s = "hello"
print(s[0])  # 输出 'h'
  • dict(字典,Python 3.7+):插入顺序保留,支持键值对访问。
d = {"a": 1, "b": 2}
print(list(d.keys()))  # 输出 ['a', 'b']
  • range(范围对象):表示一系列连续整数,按顺序生成。
r = range(5)
print(list(r))  # 输出 [0, 1, 2, 3, 4]
  • bytes(不可变二进制序列):不可变类型,按插入顺序存储,支持索引和切片操作。
b = b'hello'
print(b[0])     # 输出 104 (ASCII 'h')
print(b[1:3])   # 输出 b'el'
  • bytearray(可变二进制序列):可变类型,按插入顺序存储,支持索引和切片操作。
ba = bytearray(b'hello')
ba[0] = ord('H')  # 修改第一个字节
print(ba)         # 输出 bytearray(b'Hello')
  • memoryview(内存视图):提供对二进制数据的有序视图,支持索引和切片操作。
mv = memoryview(b'hello')
print(mv[0])      # 输出 104 (ASCII 'h')
print(mv[1:3].tobytes())  # 输出 b'el'

2. 无序的数据类型

无序的数据类型是指其内部存储顺序不固定,无法通过索引访问元素,顺序可能因操作而变化(如插入或删除元素)。
常见的无序数据类型

  • set(集合):存储不重复元素,无特定顺序
s = {1, 2, 3}
print(s)  # 输出可能是 {1, 2, 3},但顺序无法保证

frozenset(不可变集合):类似集合,但不可变。

fs = frozenset([1, 2, 3])
print(fs)  # 输出 frozenset({1, 2, 3})

3.特殊的数据类型

既不属于有序,也不属于无序的类型大多是原子类型或特殊类型,它们不存储多个元素,无法体现顺序性。这些类型在 Python 中用于表示单个值、逻辑操作、或用于组织代码。

1. 数字类型

  • int, float, complex
    • 它们是单独的值,不是容器类型,因此不涉及顺序。

2. 布尔类型

  • bool
    • 它只包含 True 和 False 两个值,不涉及多个元素的排列。

3. 空类型

  • NoneType
    • 表示“无值”或“空”,只有一个值 None,无存储顺序。

4. 函数类型

  • function
    • 表示可执行的逻辑操作,而非数据的存储和排列。

5. 迭代器与生成器

  • generator
    • 按需生成数据,但生成后无法再次访问已生成的数据。

6. 省略类型

  • ellipsis
    • 仅有 … 一个值,常用于占位或省略操作。

7. 模块与类

  • module, class
    • 用于代码的组织和定义,不存储具体的数据元素。

4. 对比总结

数据类型是否有序可变性备注
str有序不可变存储字符序列
list有序可变常用序列类型
tuple有序不可变用于不可变类型
dict(python3.7+)有序可变保留插入顺序
range有序不可变按顺序生成整数
bytes有序不可变二进制不可变序列
bytearray有序可变二进制可变序列
memoryview有序可变视图对二进制数据的高效操作
set无序可变无重复元素,操作后顺序可能改变
frozenset无序不可变无重复元素,适合需要哈希的情况
int, float, complex不适用不可变单个值,不涉及顺序
bool不适用不可变单个值,不涉及顺序
NoneType不适用不可变表示“无值”
function不适用不可变可执行的逻辑操作
generator不适用不可变按需生成数据,生成后不可重复迭代
ellipsis不适用不可变仅有一个值 …
module不适用可变用于代码组织,存储代码的对象
class不适用可变用户定义类型,表示行为和状态

注意:

  • Python 3.7+ 中的字典默认是有序的(按插入顺序存储)。
  • 有序类型支持索引或可预测的迭代顺序,而无序类型通常只支持元素检查和集合操作,特殊类型表示单个值、逻辑操作、或用于组织代码。

四、总结

这一章内容,我们主要记住以下几点:

  • 常用数据类型,分为有序类型、无序类型和特殊类型
  • 有序数据类型包括:文本序列类型、序列类型、映射类型、二进制序列类型
  • 无序数据类型包括:集合类型
  • 特殊数据类型包括:数字类型、布尔类型、空类型、函数类型、迭代器与生成器、省略类型、模块与类

从这篇文章我们知道,数据类型是一个集合概念,每个集合概念还包括子集合概念,子集合概念再包括子概念,如果想了解每个数据类型的使用,我们首先应该认识到针对数据类型的定义、分类和比较是一切学习的前提条件,学习其他学科也一样,只有学会定义、分类、比较才可以深入理解一个概念或集合概念。

标签:顺序,python,分类,数据类型,无序,print,有序,类型
From: https://blog.csdn.net/gaolc888/article/details/143850859

相关文章

  • Python程序py代码加密方法
    Python程序语言使用方便,应用范围广,但Python的代码加密保护是一个问题,下面介绍一种专业的python程序py代码加密方法,可以有效地保护源代码! 下载最新加密锁开发工具包http://chinadlp.com/?list-DriveDownload.html 完全默认安装后,打开如下开发工具 在安装目录下找到python......
  • Scala-数据类型-概述(Scala 3.x 类型层次结构)
    ScalaScala-数据类型Scala1.`Any`—顶级类型2.`Matchable`—匹配类型3.`AnyVal`—值类型的父类4.`AnyRef`—引用类型的父类5.`Null`-引用类型的子类型Tips:为什么`null`不推荐使用?6.`Nothing`-底层类型(BottomType)整理不易,对您有帮助的话,还请......
  • 我开源了一个支持python代码在浏览器实时渲染ui和交互的插件!
    1.这个项目是干什么的?AICodePreviewExtension是一款专为开发者设计的Chrome浏览器扩展程序。它旨在帮助用户在AI对话平台(如ChatGPT等)中轻松预览和交互代码,无需切换到本地环境即可测试和运行代码。通过提供实时渲染和代码管理功能,这个工具极大地提升了开发者在日常......
  • 24.Python基础篇-异常处理
    1.什么是异常?异常(Exception)是程序在运行过程中出现的错误情况。Python提供了强大的异常处理机制,使得程序在遇到错误时能够继续执行或者给出适当的错误提示。避免程序因为某个错误而中断。异常处理有助于提高代码的健壮性,2.异常处理的语法:try:用于包围可能会抛出异常的代码块......
  • python内置 any 与 all
    any在Python中,any是一个内置函数,用于判断可迭代对象(如列表、元组、集合等)中是否至少有一个元素为True。它返回一个布尔值。语法:any(iterable)参数:iterable:任何可迭代对象,例如列表、元组、集合、生成器等。返回值:True:如果iterable中至少有一个元素为真。False:如......
  • python基础练习题----练手
    python—练手题—40题#01-helloworldprint('helloworld!')#如果3大于0,则打印'ok'和'yes'if3>0:print('ok')print('yes')x=3y=4print(x+y)#02-printprint('helloworld!')print(�......
  • Python如何根据给定模型计算权值
    在机器学习和深度学习中,模型的权值(或参数)通常是通过训练过程(如梯度下降)来学习和调整的。然而,如果我们想根据一个已经训练好的模型来计算或提取其权值,Python提供了许多工具和库,其中最常用的是TensorFlow和PyTorch。一、使用TensorFlow示例在TensorFlow中,模型的权值(或参数)是......
  • #HarmonyOS篇: 主题图标库&资源分类与访问
    主题图标库https://developer.huawei.com/consumer/cn/design/harmonyos-symbol/资源分类与访问地址https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/resource-categories-and-access-V5base目录是默认存在的目录,二级子目录element用于存放字符串......
  • 学python之前的基础知识准备
    计算机的组成    计算机由两部分组成:硬件和软件。    硬件包括:键盘、鼠标、显示器、cpu、主板、内存、硬盘。硬件是看得见摸得着的。    软件包含:系统软件(windows、macOS、Linux)和应用软件。(officr、QQ微信),软件是看得见摸不着的。主要负责控制计算......
  • Python 编程入门指南(一)
    1.Python简介Python是一种广泛使用的高级编程语言,因其简洁的语法和强大的功能而备受欢迎。Python由GuidovanRossum于20世纪90年代初设计,旨在提供易于阅读和编写的代码,适合从初学者到专业开发者的各个水平。它是一种解释型语言,这意味着在编写和执行代码之间不需要编译步......