摘要:分享学习Python数据结构的一些理解,主要包含序列(如列表和元组),映射(如字典)以及集合3中基本的数据结构,以及可变和不可变数据类型。

  Python 中的数据结构是根据某种方式将数据元素组合起来形成的一个数据元素集合,其中主要包含序列(如列表和元组),映射(如字典)以及集合3中基本的数据结构。几乎所有的Python数据结构都可以归结为这3种数据结构类型。

1.数据类型结构总表

  Python数据结构除了分为序列(如列表和元组),映射(如字典)以及集合3中基本的数据结构外,也可区分为可变数据类型与不可变数据类型。

  (1)可变数据类型

  通过可变数据类型,可以直接对数据结构对象的内容进行修改(并非是重新对对象赋值操作,即可以对数据结构对象进行元素的赋值修改、删除或增加等操作。由于可变数据类型对象能直接对自身进行修改,所以修改后的新结果仍与原对象引用同一个id地址值,即由始至终只对同一个对象进行了操作。 Python中比较重要的可变数据类型包括列表、字典、可变集合等。

  (2)不可变数据类型

  与可变数据类型不同,不可变数据类型不能对数据结构对象的内容进行修改操作,不可对对象中的元素进行增加、删除和赋值修改。若需要对对象进行内容修改,则需要对其变量名进行重新赋值,赋值操作会把变量名指向一个新对象,新旧对象两者引用两个不同的id地址值。常用的不可变数据类型包括数字、字符串、元组、不可变集合等。

2.序列类型

  序列是数据结构对象的有序排列,数据结构对象作为序列的元素都会被分配一个位置编号(也称为索引),序列就相当于数学中数列的概念。Python中的序列类型包括字符串(string)、列表(list)、元组(tuple)、Unicode字符串、 buffer对象、 Xrange对象等数据结构,其中字符串、列表和元组最为常用。

字符串特点:

  • "任何在这双引号之间的文字”;
  • "单引号其实和双引号完全一样”;
  • '''三个引号被用于长段文字

或说明,只要引号不结束,你就可以任意

换行''’;

  • 字符串属不可变数据类型。

列表特点:

  • 列表创建在[ ]中,例[12,’dog’,’猫’]
  • 列表中每个元素都是可变的;
  • 列表中的元素是有序的,每个元素对应一个位置;
  • 列表可以容纳Python中的任何对象。

元组特点:

  • 元祖创建在( )中,例(55,’app’,’a’,’p’,’p’)
  • 元祖中每个元素都是不可变的;
  • 元祖中的元素是有序的,每个元素对应一个位置。

3.映射类型

  映射类型就是存储了对象与对象之间的映射关系的数据结构类型, Python中唯一的映射类型数据结构是字典( dictionary),字典中的每个元素都存在相应的名称(称为键)与之一一对应。字典相当于带有各自名称的元素组成的集合。与序列不同的是,字典中的元素并没有排列顺序。

字典特点:

  • 字典创建在{ }中,例{key1:value1,,key2:value2,key3:value3,}
  • 元素是键值对是无序、可变的,但键不变且不允许重复,值可变;
  • 键-值成对出现;
  • 键不能重复;
  • 键不可更改,值可修改;
  • 键来索引值。

4.集合类型

  除了上述基本数据结构类型外, Python还提供了一种称为集合的数据结构。集合当中的元素不能重复出现,即集合中的元素是相对唯一的,并且元素不存在排列顺序。由此可以看出, Python中的集合概念相当于数学中的集合概念。集合类型包括可变集合(set)与不可变集合( frozenset)。

集合特点:

  • 集合创建在{ }中,例{1,2,3,’a’,’b’,’c’}
  • 集合是无序的;
  • 集合不能重复,不可更改。

Python 数据结构理解分享的更多相关文章

  1. Python数据结构与算法--List和Dictionaries

    Lists 当实现 list 的数据结构的时候Python 的设计者有很多的选择. 每一个选择都有可能影响着 list 操作执行的快慢. 当然他们也试图优化一些不常见的操作. 但是当权衡的时候,它们还 ...

  2. Python数据结构与算法--算法分析

    在计算机科学中,算法分析(Analysis of algorithm)是分析执行一个给定算法需要消耗的计算资源数量(例如计算时间,存储器使用等)的过程.算法的效率或复杂度在理论上表示为一个函数.其定义 ...

  3. Python - 数据结构 - 第十五天

    Python 数据结构 本章节我们主要结合前面所学的知识点来介绍Python数据结构. 列表 Python中列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和 ...

  4. python数据结构之图的实现方法

    python数据结构之图的实现方法 本文实例讲述了python数据结构之图的实现方法.分享给大家供大家参考.具体如下: 下面简要的介绍下: 比如有这么一张图:     A -> B     A ...

  5. Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例

    本文实例讲述了Python数据结构与算法之图的最短路径(Dijkstra算法).分享给大家供大家参考,具体如下: # coding:utf-8 # Dijkstra算法--通过边实现松弛 # 指定一个 ...

  6. Python数据结构与算法之图的广度优先与深度优先搜索算法示例

    本文实例讲述了Python数据结构与算法之图的广度优先与深度优先搜索算法.分享给大家供大家参考,具体如下: 根据维基百科的伪代码实现: 广度优先BFS: 使用队列,集合 标记初始结点已被发现,放入队列 ...

  7. python数据结构之图深度优先和广度优先实例详解

    本文实例讲述了python数据结构之图深度优先和广度优先用法.分享给大家供大家参考.具体如下: 首先有一个概念:回溯 回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标.但当探索到 ...

  8. python数据结构与算法

    最近忙着准备各种笔试的东西,主要看什么数据结构啊,算法啦,balahbalah啊,以前一直就没看过这些,就挑了本简单的<啊哈算法>入门,不过里面的数据结构和算法都是用C语言写的,而自己对p ...

  9. python数据结构与算法——链表

    具体的数据结构可以参考下面的这两篇博客: python 数据结构之单链表的实现: http://www.cnblogs.com/yupeng/p/3413763.html python 数据结构之双向 ...

随机推荐

  1. PHP如何解决网站大流量与高并发的问题(二)

    转载:https://zhyunfe.github.io/2017/10/02/php-interview-prepare-hc-2/ 数据库缓存 相关概念 什么是数据库缓存? 为什么使用缓存 使用M ...

  2. 远程桌面工具mRemoteNG与Tsmmc

    一.Tsmmc.msc远程管理工具.1.下载链接:https://pan.baidu.com/s/1tV_xP-ITWyKKzAxLSlGxlw 密码:0jrt 将目录下的mstsmhst.dll.m ...

  3. JVM 类加载器命名空间深度解析与实例分析

    一.创建Sample 1.创建实例 public class MyPerson { private MyPerson myPerson; public void setMyPerson(Object ...

  4. CMU Database Systems - Concurrency Control Theory

    并发控制是数据库理论里面最难的课题之一 并发控制首先了解一下事务,transaction 定义如下, 其实transaction关键是,要满足ACID属性, 左边的正式的定义,由于的intuitive ...

  5. Oracle数据库启动报错,找不到数据文件(ORA-01157和ORA-01110)

    数据库报了ORA-01157和ORA-01110错误,提示找不到一个数据文件. 1.启动数据库报错 在启动数据库过程中,报了ORA-01157和ORA-01110错误,提示找不到数据文件. SQL&g ...

  6. uefi下如何启动linux?

    1. 有两种方式 1.1 直接从uefi shell启动linux内核 1.2 从uefi shell启动grub,然后再从grub启动linux内核 2. 需要哪些东西? 2.1 linux内核 2 ...

  7. redis删除多个键

    DEL命令的参数不支持通配符,但我们可以结合Linux的管道和xargs命令自己实现删除所有符合规则的键.比如要删除所有以“user:”开头的键,就可以执行redis-cli KEYS "u ...

  8. Java基础 import 要在所有的class前面

        JDK :OpenJDK-11      OS :CentOS 7.6.1810      IDE :Eclipse 2019‑03 typesetting :Markdown   code ...

  9. flutter DateTime日期&时间选择器

    import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'dart:async'; class ...

  10. openresty开发系列27--openresty中封装redis操作

    openresty开发系列27--openresty中封装redis操作 在关于web+lua+openresty开发中,项目中会大量操作redis, 重复创建连接-->数据操作-->关闭 ...