首页 > 编程语言 >数据结构简介及PYTHON里的数据类型

数据结构简介及PYTHON里的数据类型

时间:2024-05-16 21:43:39浏览次数:25  
标签:存储 PYTHON 元素 数据类型 元组 列表 数据结构 数据 结构

1、什么是数据结构?
先介绍几个概念。
信息是目前在生活和工作中最经常听到的一个词,但要给信息这个概念一个容易理解的确切定义并不容易。人们希望用计算机处理的终极对象就是客观存在的各种信息,因此说计算机是处理信息的工具。
数据是信息的载体,是指计算机(程序)能够处理的符号形式的综合,或说是经过了编码的信息(信息的编码显示)。数据是计算机程序加工的原料。
数据元素用于指最基本的数据单位,在计算机硬件层面,所有被存储和处理的数据最终都编码为二进制代码形式。一切数据最终都表现为二进制的序列,最基本的数据元素就是一个二进制位。但在计算机应用的各个层面上,数据可能具有更加丰富多彩的表现形式,这时说的一个数据元素就是指在当前的上下文中作为整体保存和处理的一个数据单元。
数据类型是一个值的集合和定义在此集合上的一组操作的总称。数据类型分为:1)原子类型,它的值不可再被分割的数据类型;2)结构类型,它的值还可以再分割为若干个成分的数据类型;3)抽象数据类型,抽象数据组织与之相关的操作。
数据结构是相互之间存在一种或多种特定关系的数据元素的集合,也可以这样说,数据元素互相之间都存在这某种关系(不会孤立存在),这样的数据元素之间存在的关系就被称为结构。数据结构三要素:逻辑结构、存储结构和数据的运算
数据的逻辑结构和存储结构是密不可分的两个方面,算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所采用的存储结构。逻辑结构可以认为是在大脑中构想出的数据之间的存储关系,存储结构则为电脑内存中存储关系。
(1)逻辑结构
逻辑结构是指数据元素之间的逻辑关系,与数据的存储无关,是独立于计算机的。数据的逻辑结构分为线性结构和非线性结构,线性表是典型的线性结构;集合、树和图是典型的非线性结构。

线性结构:数据中的元素之间只存在一对一的关系;
集合:结构中的数据元素之间除“同属于一个集合外”,别无其他关系;
树形结构:结构中的数据元素之间存在一对多的关系;
图状结构:结构中的数据元素之间存在多对多的关系。
(2)存储结构
存储结构是指数据结构在计算机中的表示(又称映像),也称物理结构。它包括数据元素的表示和关系的表示。数据的存储结构是用计算机语言实现的逻辑结构,它依赖于线性结构计算机语言。数据的存储结构主要有顺序存储、链式存储、索引存储和散列存储。
顺序存储:把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。优点是可以实现随机存取,每个元素占用最少的存储空间;缺点是只能使用相邻的一整块存储单元,因此可能产生较多的外部碎片。

链式存储:不要求逻辑上相邻的元素在物理位置上也相邻,借助指示元素存储地址的指针来表示元素之间的逻辑关系。优点是不会出现碎片现象,能充分利用所有存储单元;缺点是每个元素因存储指针而占用额外的存储空间,且只能实现顺序存取。

索引存储:在存储元素信息的同时,还建立附加的索引表。索引表中的每项称为索引项,索引项的一般形式是(关键字,地址)。优点是检索速度快;缺点是附加的索引表额外占用存储空间,另外,增加和删除数据时也要修改索引表,因而会花费比较多的时间。
散列存储:根据元素的关键字直接计算出该元素的存储地址,又称哈希(Hash)存储。优点是检索、增加和删除结点的操作都很快;缺点是若散列函数不好,则可能出现元素存储单元的冲突,而解决冲突会增加时间和空间开销。
(3)运算
数据的运算包括运算的定义和实现。运算的定义是针对逻辑结构的,指出运算的功能;运算的实现是针对存储结构的,指出运算的具体操作步骤。
2、PYTHON里的八大数据类型
不可再分的基本类型包括逻辑类型Boolean、数值型number、字符串类型string、空值None,还有一些组合数据类型包括列表list、元组tuple、集合set、字典dict。其中,不可变类型:数字、字符串、元组;可变类型:列表、集合、字典。
(1)逻辑类型Boolean
类型bool包括两个值(两个对象)True和False,可用操作包括and、or和not。
(2)空值None
空值是python里的一个特殊值,用None表示,None不能理解为0,因为0是有意义的,而None是一个特殊值。
(3)数值型number
数值型number存储数字数据,支持三种不同的数值类型,整型int、浮点型float、复数complex。
(4)字符串string
字符串就是以单引号或双引号括起来的任意文本,例如:'zifuchuan'、'字符串'。
(5)列表list
当需要存储一组数据时候,就需要用序列,序列给每个元素都分配一个索引,第一个是0,第二个是1,以此类推。常用的序列有:列表和元组,当我们需要改变序列的元素时候,就用列表,因为某些原因,序列不能修改时候,使用元组更加合适。创建一个列表,只要把逗号分割的不同的数据项使用方括号括起来即可。列表的数据项不需要相同的类型。
(6)元组tuple
某些情况下,我们需要的序列不可修改,这个时候,就需要用元组,元组和列表相似,但是元组的元素值不可修改也不能删除,可以进行分片和连接。元组创建很简单,用小括号括起来,用逗号隔开。元组是用小括号,列表使用中括号。
(7)集合set
类似dict,是一组Key的集合,不存储value,本质:无序和无重复元素的集合。
(8)字典dict
列表中元素通过下标进行定位,但是元素位置发生变化,则很难定位,python提供一种新的类型,那就是字典。字典中元素可以通过key访问。说明:字典是由花括号括起来的,包含key、value两部分,dict={'key1':'value1','key2':'value2'},字典和列表一样,也能够存储多个数据,列表中找某个元素时,是根据下标进行的,字典中找某个元素时,是根据key进行的。

标签:存储,PYTHON,元素,数据类型,元组,列表,数据结构,数据,结构
From: https://www.cnblogs.com/hayu/p/18195428

相关文章

  • 电子书自由:python生成epub电子书
    前言最近在看《剑来》小说,但是kindle在线看不方便,而且我在网上找到的只有600多章,目前最新已经更新到了1200章,为了确保后面有书可读,同时也为了巩固下python技能,于是我找到一个免费的网站,然后通过python获取书籍内容,最终将获取到的内容,生成epub电子书,核心内容如下:获取电子书的内......
  • python部署至k8s解决方案
    前言最近做了一个全文检索的项目,项目之前的架子是别人搭建的,部署方式是docker-compose,到后期这个同事基本上不参与了,后面发布测试的时候,我们觉得这种方式不适合测试环境和线上发版(当然也可能是我们不熟悉,有点不专业了),于是就在他开发的基础上,做了一些调整:修改Dockerfile:把依赖打......
  • Python基础01
    Python基础01学习视频https://www.bilibili.com/video/BV1qW4y1a7fU软件pycharm通过快捷键快速设置字体大小常用快捷键ctrl+alt+s:打开软件设置ctrl+d:复制当前行代码shift+alt+上\下:将当前行代码上移或下移crtl+shift+f10:运行当前代......
  • 解决Python执行命令时路径空格引发的困扰
    哈喽,大家好,我是木头左!在编程实践中,常常需要通过Python执行系统命令,这包括调用外部程序、脚本或是其他命令行工具。然而,一个看似简单却常被忽视的细节——文件路径中的空格,可能会导致程序意外崩溃或行为异常。本篇文章将深入探讨当路径中包含空格时,如何在Python中正确执行命令,以......
  • Python查询PostgreSQL数据库
    哈喽,大家好,我是木头左!Python与PostgreSQL的连接需要了解如何在Python中连接到PostgreSQL数据库。这通常涉及到使用一个库,如psycopg2,它是Python中用于PostgreSQL的最流行的适配器。安装psycopg2非常简单,可以通过pip进行安装:pipinstallpsycopg2安装完成后,可以使用以下代码......
  • python 面向对象(进阶篇)
    python面向对象(进阶篇) 上一篇《Python面向对象(初级篇)》文章介绍了面向对象基本知识:面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用类是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中)对象,根据模板创建的实例(即......
  • 利用python脚本批量读取当前目录下所有excle表格中特定的单元格内容
    利用python脚本批量读取当前目录下所有excle表格中特定的单元格内容importosfromopenpyxlimportload_workbook#设置要读取的单元格地址cell_address='N18'#遍历当前目录下的所有文件forfilenameinos.listdir('.'):iffilename.endswith(......
  • 利用python脚本批量替换当前目录下所有excle表格中特定的单元格内容
    利用python脚本批量替换当前目录下所有excle表格中特定的单元格内容#导入os模块,用于文件和目录操作importos#导入openpyxl库中的load_workbook函数,用于加载Excel文件fromopenpyxlimportload_workbook#定义一个函数replace_cell_content,用于替换Exc......
  • python打包在32位无法运行问题
    真不想吐槽现在的技术越高级越烂的一批尤其是开发工具win1064位python64位开发pyinsataller打包后不能在32位上运行别折腾重新安装python32位测试安装python3.12.232位竟然不能安装pandas(见鬼去吧)重新安装python3.8.10提示不能用在xp上,也可以接受了.再安装依赖包,没......
  • docker构建python镜像
    执行步骤如下:1、使用Dockerfile创建有 接口自动化框架执行环境 的python镜像2、根据python镜像,编写shell脚本创建容器3、拉取git(接口自动化框架)上的代码,使用python执行接口自动化框架4、执行完成之后自动销毁容器使用Dockfile创建python镜像前置:需创建目录py38dockerfi......