Python常用的数据结构详解
数据结构:通俗点说,就是储存大量数据的容器。这里主要介绍Python的4种基本数据结构:列表、字典、元组、集合。
格式如下:
列表:list = [val1,val2,val3,val4],用中括号;
字典:dict = {key1:val1,key2:val2},大括号,且每个元素是带有冒号的key与val的对应关系组;
元组:tuple = (val1,val2,val3,val4),小括号;
集合:set = {val1,val2,val3,val4},大括号。
1. 列表:
list = [val1,val2,val3,val4]
列表最显著的特征是:
列表中每个元素都是可变的;
列表中的元素都是有序的,即每个元素都有一个位置;
列表可以容纳Python中的任何对象。
接下来看下列表的增删改查。
增:
1
2
3
|
1 list = [ 1 , 'dwd' , 3.6 ] 2 list .insert( 0 , 'Python' ) 3 print ( list ) |
用insert方法可以实现在列表中增加元素。insert方法需要写明增加在哪个位置和增加的内容,新增元素的实际位置是在指定位置元素之前的位置;如果指定的位置不存在,默认会增加在列表末尾。
1
2
3
4
5
6
|
1 list = [ 1 , 'dwd' , 3.6 ] 2 list [ 0 : 0 ] = [ 9 ] 3 # 【0:0】是指在list中的第1个位置插入新元素 4 list [ 3 : 3 ] = [ 'a' ] 5 # 【3:3】是指在list中的第4个位置插入新元素 6 print ( list ) |
上面说到的这两种方法都是添加单个元素,除了添加单个元素外,还可以添加多个元素,用extend方法来实现。
1
2
3
4
5
|
1 list_a = [ 1 , 'dwd' , 3.6 ] 2 list_b = [ 'Python' , 56 , 'game' ] 3 list_a.extend(list_b) 4 # extend方法用于在列表末尾一次性追加另一个列表中的多个值 5 print (list_a) |
删:
1
2
3
|
1 list = [ 1 , 'dwd' , 3.6 ] 2 list .remove( 'dwd' ) 3 print ( list ) |
删除列表中的元素除了用上面的remove方法来实现外,也可以用del关键字来声明:
1
2
3
4
|
1 list = [ 1 , 'dwd' , 3.6 ] 2 del list[ 0 : 2 ] 3 # 【 0 : 2 】是删除第 1 和第 2 个位置的元素 4 print(list) |
改:
1
2
3
4
|
1 list = [ 1 , 'dwd' , 3.6 ] 2 list [ 2 ] = 7 3 list [ 0 ] = 'start' 4 print ( list ) |
如果想要替换掉列表中的某个元素,可以直接给列表某位置的元素重新赋值,list[2]指list列表中的第3个元素。
查:
列表的索引与之前文章《Python入门_浅谈字符串的分片与索引、字符串的方法》中提到的字符串的索引类似,同样是分正反两种索引方式,可以从前往后,也可以从后往前索引。比如:
1
2
3
4
5
6
7
8
9
|
list = [ 1 , 'dwd' , 3.6 ] print ( list [ 1 ]) # 打印第2个位置的元素 print ( list [ - 1 ]) # 打印倒数第一个位置的元素 print ( list [: 2 ]) # 打印第1和第2个元素 print ( list [ 1 :]) # 打印第2到最后一个的元素 |
但如果想查看某个元素的位置,就不适合用这种方式,程序会报错。因为列表只接受用位置进行索引,不可以通过元素来查找位置。
2. 字典:
dict = {key1:val1,key2:val2}
编程世界中的很多概念都源自于生活,字典也是。这种数据结构如我们使用的字典一样,通过“名称—内容”来构建,在Python中每个元素是带有冒号的key与val的对应关系组,习惯称之为键值对。
字典的特征如下:
字典中的元素必须是键值对的形式;
键(key)不可以重复,而值(val)可以重复;
键不可变,无法修改;值可修改,可以是任何对象。
即使字典中有重复的键,打印出来时也只会出现一次。比如:
1
2
|
1 dict = { 'A' : 'art' , 'B' : 'big' , 'C' : 'cute' , 'C' : 'cute' } 2 print ( dict ) |
接下来看下字典的增删改查。
增:
字典中没有像列表那样有一个现成的insert方法可以使用,但可以通过下面这种方式插入元素,元素默认会插入在最后一个位置。
1
2
3
|
1 dict = { 'A' : 'art' , 'B' : 'big' , 'C' : 'cute' } 2 dict [ 'D' ] = 'dictionary' 3 print ( dict ) |
上面讲到在列表中增加多个元素时可以使用extend方法来实现,在字典中也有对应的update方法来实现添加多个元素。
1
2
3
|
1 dict = { 'A' : 'art' , 'B' : 'big' , 'C' : 'cute' } 2 dict .update({ 'D' : 'dictionary' , 'E' : 'exam' }) 3 print ( dict ) |
删:
在字典中删除某元素,也可以使用del关键字。
1
2
3
|
1 dict = { 'A' : 'art' , 'B' : 'big' , 'C' : 'cute' } 2 del dict [ 'B' ] 3 print ( dict ) |
需要注意的是,虽然字典是用大括号的,但在删除时依然使用的是中括号。
改:
如果要修改字典里的元素,直接重新给键赋值即可。
1
2
3
|
1 dict = { 'A' : 'art' , 'B' : 'big' , 'C' : 'cute' } 2 dict [ 'B' ] = 'beyond' 3 print ( dict ) |
查:
在字典中进行索引时,和删除一样,用的是中括号,中括号中存放字典的键,也就是说对字典元素进行索引时是通过键来索引的。
1
2
3
|
1 dict = { 'A' : 'art' , 'B' : 'big' , 'C' : 'cute' } 2 dict [ 'B' ] 3 print ( dict [ 'B' ]) |
之前在文章《Python入门_浅谈字符串的分片与索引、字符串的方法》中有提到过字符串的分片,在字典里,字符串是不可以进行分片的。
3. 元组
tuple = (val1,val2,val3,val4)
Python中的元组与列表类似,不同之处在于元组不可以修改,类似于稳固版的列表,因此在列表中可以使用的增删改的方法在元组中是不可以使用的,但是可以对元组中的元素进行索引,和列表类似。
1
2
3
4
5
|
1 tup = ( 1 , 2 , 's' , 7 ) 2 print (tup[ 0 ]) 3 print (tup[ - 1 ]) 4 print (tup[ 1 :]) 5 print (tup[: - 2 ]) |
4. 集合
set = {val1,val2,val3,val4}
集合的概念有点接近于数学上的集合。每个集合中的元素是无序的、不重复的任何对象,我们可以通过集合去判断数据的从属关系,有时还可以通过集合把数据结构中重复的元素减掉。
集合不可以被切片也不能被索引,除了做集合运算之外,集合元素可以被添加和删除。
1
2
3
4
5
6
7
|
set = { 7 , 1 , 8 , 3 , 4 , 5 , 3 } set .add( 0 ) # 新增元素0 set .discard( 7 ) # 删除掉元素7 print ( set ) # 打印出的集合会从小到达排列,并去重 |
等后面如果用到集合时,再详细展开集合的运算。
后续会介绍下数据结构的一些小技巧。
操作环境:Python版本,3.6;PyCharm版本,2016.2;电脑:Mac
Python常用的数据结构详解的更多相关文章
- Python 常用外部模块详解
Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Py ...
- Python中的高级数据结构详解
这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考 ...
- Python 列表(List)操作方法详解
Python 列表(List)操作方法详解 这篇文章主要介绍了Python中列表(List)的详解操作方法,包含创建.访问.更新.删除.其它操作等,需要的朋友可以参考下 列表是Python中最基本 ...
- Python数据类型及其方法详解
Python数据类型及其方法详解 我们在学习编程语言的时候,都会遇到数据类型,这种看着很基础也不显眼的东西,却是很重要,本文介绍了python的数据类型,并就每种数据类型的方法作出了详细的描述,可供知 ...
- Python中time模块详解
Python中time模块详解 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. ...
- Maya 常用环境变量详解
Maya 常用环境变量详解 前言: Maya 的环境变量让用户可以很方便的自定义 Maya 的功能. 在 Maya 的 Help 帮助文档中有专门的一个章节< Environment Varia ...
- Javascript常用的设计模式详解
Javascript常用的设计模式详解 阅读目录 一:理解工厂模式 二:理解单体模式 三:理解模块模式 四:理解代理模式 五:理解职责链模式 六:命令模式的理解: 七:模板方法模式 八:理解javas ...
- 常用socket函数详解
常用socket函数详解 关于socket函数,每个的意义和基本功能都知道,但每次使用都会去百度,参数到底是什么,返回值代表什么意义,就是说用的少,也记得不够精确.每次都查半天,经常烦恼于此.索性都弄 ...
- Python的logging模块详解
Python的logging模块详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.日志级别 日志级别指的是产生的日志的事件的严重程度. 设置一个级别后,严重程度 ...
随机推荐
- 吴裕雄--天生自然MySQL学习笔记:MySQL ALTER命令
需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令. root@host# mysql -u root -p password; Enter password:******* ...
- UML-迭代2:更多模式
1.之前的初始阶段+细化阶段中的迭代1讲述的是广泛使用的基本分析和对象设计技术.而迭代2中,案例研究只强调: 对象设计和模式: 1).基本对象设计(基于职责和GRASP) 2).使用模式来创建稳固的设 ...
- ubuntu下安装ant
背景介绍 最近终于正式开始填补一下自己在web方面的知识漏洞. 而ant则是必不可少的东西了,要问ant的作用是什么,简单的说,这个软件可以用最简单的方法将你的web应用程序部署到服务器上,是不是很强 ...
- Linux(CENTOS7) Jdk完整步骤安装
方式一: 直接通过yum安装,这种方式比较方便,下面贴上安装jdk1.8*的命令: -openjdk* -y 上面命令执行完成之后,使用下面命令即可查看是否安装成功: java -version 方式 ...
- 33. docker swarm 集群服务通信 之 RoutingMesh - Ingress 网络
1.作用 当在 任何 一个 swarm 节点去访问 端口服务的时候 会通过 本节点 的 IPVS ( ip virtual service ) 到 真正的 swarm 节点上 当访问 docker h ...
- 计算机ASCII码对照表
ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 0 NUT 32 (space) 64 @ 96 . 1 SOH 33 ! 65 A 97 a 2 ST ...
- Kerbernetes的Service资源管理
Kerbernetes的Service资源管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Service概述 1>.为什么需要Service资源 我们知道在Kube ...
- jQuery如何给DOM添加ID
ID每个元素只能有一个,ID名同一页面也不能重复,addID方法是不需要的,和其他属性一样用attr方法就行了, $(singleTarget).attr('id','idName'); 更简单的 $ ...
- UVA 10801 多线程最短路
题意:一栋摩天大楼从0层到K层,有N部电梯,每个电梯都有自己的运行速度,此外,对于某个电梯来说,并不是每一层都会停,允许在某一层进行电梯换乘,每次换乘固定消耗60秒,最终求从0层去K层的最短时间,如果 ...
- java 用condition&reentrylock实现生产者消费者
package com.lb; import java.util.ArrayList; import java.util.List; import java.util.concurrent.locks ...