Python 数据结构理解分享
摘要:分享学习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 数据结构理解分享的更多相关文章
- Python数据结构与算法--List和Dictionaries
Lists 当实现 list 的数据结构的时候Python 的设计者有很多的选择. 每一个选择都有可能影响着 list 操作执行的快慢. 当然他们也试图优化一些不常见的操作. 但是当权衡的时候,它们还 ...
- Python数据结构与算法--算法分析
在计算机科学中,算法分析(Analysis of algorithm)是分析执行一个给定算法需要消耗的计算资源数量(例如计算时间,存储器使用等)的过程.算法的效率或复杂度在理论上表示为一个函数.其定义 ...
- Python - 数据结构 - 第十五天
Python 数据结构 本章节我们主要结合前面所学的知识点来介绍Python数据结构. 列表 Python中列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和 ...
- python数据结构之图的实现方法
python数据结构之图的实现方法 本文实例讲述了python数据结构之图的实现方法.分享给大家供大家参考.具体如下: 下面简要的介绍下: 比如有这么一张图: A -> B A ...
- Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
本文实例讲述了Python数据结构与算法之图的最短路径(Dijkstra算法).分享给大家供大家参考,具体如下: # coding:utf-8 # Dijkstra算法--通过边实现松弛 # 指定一个 ...
- Python数据结构与算法之图的广度优先与深度优先搜索算法示例
本文实例讲述了Python数据结构与算法之图的广度优先与深度优先搜索算法.分享给大家供大家参考,具体如下: 根据维基百科的伪代码实现: 广度优先BFS: 使用队列,集合 标记初始结点已被发现,放入队列 ...
- python数据结构之图深度优先和广度优先实例详解
本文实例讲述了python数据结构之图深度优先和广度优先用法.分享给大家供大家参考.具体如下: 首先有一个概念:回溯 回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标.但当探索到 ...
- python数据结构与算法
最近忙着准备各种笔试的东西,主要看什么数据结构啊,算法啦,balahbalah啊,以前一直就没看过这些,就挑了本简单的<啊哈算法>入门,不过里面的数据结构和算法都是用C语言写的,而自己对p ...
- python数据结构与算法——链表
具体的数据结构可以参考下面的这两篇博客: python 数据结构之单链表的实现: http://www.cnblogs.com/yupeng/p/3413763.html python 数据结构之双向 ...
随机推荐
- thymeleaf错误解决办法
Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "username&q ...
- python:如何获取当前的日期和时间
# coding=utf-8 import datetime import time print ("格式参数:") print (" %a 星期几的简写") ...
- vs2017发布后宕机,没有响应解决方法
找到项目下:Properties\PublishProfiles 删除:FolderProfile.pubxml.user
- Alternatives to Activiti for all platforms with any license
Activiti Activiti is a light-weight workflow and Business Process Management (BPM) Platform targeted ...
- layui 提交验证以及field作用
设置值时只需data.field.name(input中name属性)=1;即可赋值data.field.index_desc = layedit.getContent(index_desc); $. ...
- java(集合框架)(转)
前言 集合①只能存放对象,存放基本类型会自动转成对应的对象②可以存放不同类型的对象(如果不使用泛型的话),且不限数量③集合中存放的只是对象的引用 集合详解 集合-1.png 集合-2.png It ...
- linux内核挂载根文件系统时报错”VFS: Cannot open root device "ram0" or unknown-block(0,0): error -6“如何处理?
1. 通过error -6得到: #define ENXIO 6 /* No such device or address */ 2. 解决办法 使能CONFIG_BL ...
- iptables保存规则(ubuntu和centos)
1.Ubuntu 首先,保存现有的规则: iptables-save > /etc/iptables.rules 然后新建一个bash脚本,并保存到/etc/network/if-pre-up. ...
- 【Tomcat】Tomcat 基本使用(二)
上一章介绍了Tomcat原理[Tomcat]Tomcat 原理架构(一),本章介绍Tomcat的基本使用 Tomcat端口设置 tomcat端口设置,在tomcat的配置文件目录下的server.xm ...
- 【430】BST and Splay Tree
参考:Hello, Splay! 目录: 1. Binary Search Tree 2. Splay Tree