浅析Python语言自带的数据结构有哪些


Posted in Python onAugust 27, 2019

Python作为一种脚本语言,其要求强制缩进,使其易读、美观,它的数据类型可以实现自动转换,而不需要像C、Java那样给变量定义数据类型,使其编写非常方便简单,所以广受大家的欢迎。

现如今,Python已经广泛的应用于数据分析、数据挖掘、机器学习等众多科学计算领域。所以既然涉及到科学计算,深入了解Python原生提供的数据结构是很有必要的,这样才能在数据的海洋中游刃有余、得心应手。本文便以此展开,做一个归纳整理,方便收藏。

Python

一、序列结构

首先介绍的数据结构是序列结构,所谓序列,也就是元素顺序是很重要的,不同元素顺序的序列是不同的序列。Python中含有六种内建的序列结构,分别是list、tuple、string、unicode、buffer、xrange。

1.1、list(列表)

list,列表是一种序列,可以看做是一种数组,但不同的于其它语言的是,Python列表中的元素可以是任何数据类型,诸如,数字、字符串等等。

下面为创建list结构的几种方式:

//1.通过中括号括起已知的元素创建list 
mylist = ['orange', 'apple', 1,2,3.14]; 
//2.通过中括号创建空list,然后用append()追加动态元素 
mylist = []; 
mylist.append('orange'); 
//3.通过list()方法创建空list 
mylist = list();

选取list元素的方法:

//通过中括号加下对应下标选取,下标从0开始,-1为倒数第一个元素,以此类推 
mylist[0]; 
mylist[-1];

切片是Python中序列结构独有的一种操作,意思是从序列中选取一个子序列,凡是序列均可切片,list是序列,所以list可以切片。切片方法:

//通过[begin:end]方式完成切片 
mylist = [1,2,3,4,5]; 
mylist[0:2]; //生成的序列为[1,2,3]

list常用方法:

  • list.append(x),在列表的末尾添加一个元素。
  • list.insert(i, x),在给定的位置插入一个元素,第一个参数是要插入的元素的索引。
  • list.remove(x),移除列表中第一个值为 x 的元素,如果没有这样的元素,则抛出异常。
  • list.clear(),删除列表中所有的元素。
  • list.index(x),返回列表中第一个值为 x 的元素的从零开始的索引,如果没有这样的元素,则抛出异常。
  • list.count(x),返回元素 x 在列表中出现的次数。
  • list.reverse(),反转列表中的元素。

机器学习

1.2、tuple(元组)

tuple,元组和列表一样,都以看做是一种数组,元素可以是任何数据类型,甚至可以嵌套。唯一的区别是,元组内的元素一旦创建,是不可修改的,也不可追加。并且元组使用小括号创建,同样元组可切片,切片方法同list。

//1.通过小括号括起已知的元素创建tuple 
mytuple = (1, 3, 'hello!') 
//2.不可以用append()往tuple追加,因为tuple一旦创建,不可变更

获取tuple中的元素:

//和列表一样,通过中括号加下对应下标选取,下标从0开始,-1为倒数第一个元素,以此类推 
mytuple[0]; 
mytuple[-1];

1.3、string,unicode,buffer,xrange

这四个也是序列,做科学计算由于不太常用,不做太多介绍。

string可以看成是少量单个字符构成的list,如:

mystring = 'orange'; 
mylist = ['o','r','a','n','g','e'];

由于string也是序列,所以也可以切片,切片就当做单个字符构成的list切片即可,很多原理类似,不做过多介绍。

unicode和string类似,不过可以支持原生unicode编码的序列,如\\u4f60\\u597d。

buffer可以看成大量字符构成的list。

xrange可以看成纯数字构成的list。

科学计算

二、散列结构

所谓散列结构,区别于上述序列结构,散列结构中,元素顺序是不重要的,顺序不同的散列,还是同一个散列。散列结构有set、dict。

2.1、set(集合)

set,集合,集合是由不重复元素组成的无序的集,重点是不重复,和数学中的集合类似。无序是散列结构的特点,集合是一种散列结构,所以集合也有无序的特点。

创建set的方法:

//和list很类似,可对应参考 
//1.通过大括号括起已知的元素创建set 
myset = {'red','blue',2.71}; 
//2.通过set()方法创建空set,注意不能用{}创建空set,这样创建的是空dict 
//3.然后用add()添加动态元素,注意不是append 
myset = set(); 
myset.add('yellow'); 
Python的set集合可以支持并集,交集,差集,对称差等数学运算:

//创建集合a 
a = set('abracadabra'); 
//创建集合b 
b = set('alacazam'); 
------------------ 
print(a) 
//结果:{'a', 'r', 'b', 'c', 'd'} 
------------------ 
print(a - b); //差集 
//结果:{'r', 'd', 'b'} 
------------------ 
print(a | b); //并集 
//结果:{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'} 
------------------ 
print(a & b); //交集 
//结果:{'a', 'c'} 
------------------ 
print(a ^ b); //对称差 
//结果:{'r', 'd', 'b', 'm', 'z', 'l'}

set常用方法:

  • set.remove(x),移除集合中值为 x 的元素,如果没有这样的元素,则抛出异常。
  • set.isdisjoint(set2),判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
  • set.issubset(set2),判断集合set是否包含于set2
  • set.issuperset(set2),判断集合set是否包含set2,issubset与issuperset是一对互逆操作。

2.2、dict(字典)

dict,字典,字典由键值对组成,具有唯一性,可变性。字典是可变对象但字典的键的唯一的,是不可变对象。理解字典的最好方式,就是将它看做是一个 键 : 值对的集合。

创建dict的方法:

//1.通过大括号括起键值对创建dict 
mydict = {'name':'tom','age':'24'}; 
//2.通过dict()方法创建dict 
mydict = dict(name = 'tom',age = 24); 
//3.通过大括号创建空dict,然后通过中括号添加键值对 
mydict = {}; 
mydict['tel'] = '1300000000';

获取dict中的元素:

//需要已经知道键的名称,否则无法获取,除非遍历 
mydict.get('tel');

dict常用方法:

  • dict.copy(),拷贝出一个新的字典。
  • dict.setdefault({'sex':'man'}),有则查,无则增。
  • dict.update({'sex':'male'}),有则改,无则增。
  • dict.pop('tel'),指定删除,参数必须要有需要删除的键。
  • dict.clear(),清空字典。
  • dict.keys(),查询字典中所有的键。
  • dict.values(),查询字典中所有的值。
  • dict.items(),查询字典中所有的键值对。

以上即为Python自带的数据结构,共分为序列结构和散列结构两大类,序列结构有list、tuple、string、unicode、buffer、xrange,散列结构有set、dict。

总结

以上所述是小编给大家介绍的浅析Python语言自带的数据结构有哪些,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
为python设置socket代理的方法
Jan 14 Python
剖析Django中模版标签的解析与参数传递
Jul 21 Python
关于Python中Inf与Nan的判断问题详解
Feb 08 Python
解决Pycharm无法import自己安装的第三方module问题
May 18 Python
PyTorch学习笔记之回归实战
May 28 Python
解决Python 使用h5py加载文件,看不到keys()的问题
Feb 08 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
Aug 07 Python
Python版中国省市经纬度
Feb 11 Python
PyCharm 2020 激活到 2100 年的教程
Mar 25 Python
Jupyter Notebook 文件默认目录的查看以及更改步骤
Apr 14 Python
自学python用什么系统好
Jun 23 Python
关于python中remove的一些坑小结
Jan 04 Python
python3应用windows api对后台程序窗口及桌面截图并保存的方法
Aug 27 #Python
python协程gevent案例 爬取斗鱼图片过程解析
Aug 27 #Python
Python中Unittest框架的具体使用
Aug 27 #Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
Aug 27 #Python
Python3分析处理声音数据的例子
Aug 27 #Python
python中struct模块之字节型数据的处理方法
Aug 27 #Python
Python的bit_length函数来二进制的位数方法
Aug 27 #Python
You might like
删除无限级目录与文件代码共享
2006/07/12 PHP
mac下安装nginx和php
2013/11/04 PHP
详解PHP中websocket的使用方法
2016/09/15 PHP
PHP编写daemon process 实例详解
2016/11/13 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
2019/10/17 PHP
js刷新框架子页面的七种方法代码
2008/11/20 Javascript
for 循环性能比较 提高for循环的效率
2009/03/19 Javascript
Ruffy javascript 学习笔记
2009/11/30 Javascript
javascript重复绑定事件造成的后果说明
2013/03/02 Javascript
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
2013/10/11 Javascript
原生javascript实现无间缝滚动示例
2014/01/28 Javascript
jQuery中andSelf()方法用法实例
2015/01/08 Javascript
学习使用AngularJS文件上传控件
2016/02/16 Javascript
Bootstrap弹出带合法性检查的登录框实例代码【推荐】
2016/06/23 Javascript
js实现随机抽选效果、随机抽选红色球效果
2017/01/13 Javascript
js常用的继承--组合式继承
2017/03/06 Javascript
JS+HTML+CSS实现轮播效果
2017/11/28 Javascript
详解Puppeteer 入门教程
2018/05/09 Javascript
elementUI 设置input的只读或禁用的方法
2018/10/30 Javascript
Moment.js实现多个同时倒计时
2019/08/26 Javascript
JavaScript数组排序的六种常见算法总结
2020/08/18 Javascript
详解JavaScript中的this指向问题
2021/02/05 Javascript
[45:46]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS DT
2014/05/23 DOTA
[01:04:08]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第一场 12.16
2020/12/18 DOTA
[02:50]【扭转乾坤,只此一招】DOTA2永雾林渊版本开启新篇章
2020/12/22 DOTA
python使用chardet判断字符串编码的方法
2015/03/13 Python
python如何派生内置不可变类型并修改实例化行为
2018/03/21 Python
Django 实现将图片转为Base64,然后使用json传输
2020/03/27 Python
Python Selenium模块安装使用教程详解
2020/07/09 Python
The Athlete’s Foot新西兰:新西兰最大的运动鞋零售商
2019/12/23 全球购物
送货司机岗位职责
2013/12/11 职场文书
后进生转化工作制度
2014/01/17 职场文书
三方股东合作协议书
2014/10/28 职场文书
mysqldump进行数据备份详解
2022/07/15 MySQL
Mybatis 一级缓存和二级缓存原理区别
2022/09/23 Java/Android