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] = 73 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)# 新增元素0set.discard(7)# 删除掉元素7print(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模块详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.日志级别 日志级别指的是产生的日志的事件的严重程度. 设置一个级别后,严重程度 ...
随机推荐
- 68.ORM查询条件:date,time,year,week_day等
1. date: 首先查看数据库中article表的信息,由表中的create_time字段可以看出时间为2020.2.5 打印出查询的结果: <QuerySet []>:但是查询的结果为 ...
- 落地即王道,锁死企业智变CP——云+AI
国庆前夜,"70年,我是主角"的微电影引发网络热议,这是人民日报新媒体和电影频道联手打造.京东云和京东AI提供技术支持.这是中国首部全民定制国庆献礼片,网友只要上传正脸照片,就能通 ...
- windows下使用mysqlbinlog做数据恢复时出现mysqlbinlog: File 'D:\MariaDB' not found (Errcode: 2)
出现如下这种情况是因为为找到bin-log日志,但为什么没有查到了??? 从图中可以看出系统只到到了D:\MariaDB但路径并没有查全,默认在windows下是以空格为分隔符的,所以他把D:\Mar ...
- SQL基础教程(第2版)第3章 聚合与排序:3-4 对查询结果进行排序
第3章 聚合与排序:3-4 对查询结果进行排序 ● 使用ORDER BY子句对查询结果进行排序.● 在ORDER BY子句中列名的后面使用关键字ASC可以(通常省略默认)进行升序排序,使用DESC关键 ...
- Nginx系列p1:安装
学习新的知识都要从搭建环境开始,今天我们就来学习搭建一个 Nginx 环境. 环境:Ubuntu16.04 STL Nginx 1.16.1 Stable version 前言:当然可以通过 apt- ...
- try{}catch{}finally{}使用总结
import java.util.Scanner; class MyException extends Exception { public MyException(String Message) { ...
- MVC——EF 回顾总结
回顾一下MVC的知识点. 其实开始 我在学校的知识对MVC 还是很模糊的一个概念.只是记得结合EasyUI 增删改查 和分页,代码都是模糊的 进过这段时间的学习,让我对MVC 有了一个很清楚的认识. ...
- Linux下idea由于缺少相关权限导致的tomcat ERROR
昨天一天都在倒腾两个系统,也是醉了. 不过还好,系统修好了,在ubuntu下重新安装idea后,出现了这个错误: Intellij Idea Tmocat Error running Tomcat: ...
- 腾讯一shell试题.
腾讯一shell试题. 假设qq.tel文件内容: 12334:13510014336 12345:12334555666 12334:12343453453 12099:13598989899 12 ...
- 【MySQL参数】-innodb_flush_method
innodb_flush_method这个参数控制着innodb数据文件及redo log的打开.刷写模式,对于这个参数,文档上是这样描述的:有三个值:fdatasync(默认),O_DSYNC,O_ ...