浅析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调用C/C++动态链接库的方法详解
Jul 22 Python
python查找指定具有相同内容文件的方法
Jun 28 Python
Python编程实现生成特定范围内不重复多个随机数的2种方法
Apr 14 Python
深入浅出学习python装饰器
Sep 29 Python
自学python的建议和周期预算
Jan 30 Python
Python 利用切片从列表中取出一部分使用的方法
Feb 01 Python
Flask教程之重定向与错误处理实例分析
Aug 01 Python
python中enumerate() 与zip()函数的使用比较实例分析
Sep 03 Python
python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
Mar 08 Python
Python ORM框架Peewee用法详解
Apr 29 Python
python使用requests库爬取拉勾网招聘信息的实现
Nov 20 Python
pandas中关于apply+lambda的应用
Feb 28 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
PHP中使用Session配合Javascript实现文件上传进度条功能
2014/10/15 PHP
javascript动态改变img的src属性图片不显示的解决方法
2010/10/20 Javascript
multiSteps 基于Jquery的多步骤滑动切换插件
2011/07/22 Javascript
简略说明Javascript中的= =(等于)与= = =(全等于)区别
2013/04/16 Javascript
使用PHP+JQuery+Ajax分页的实现
2013/04/23 Javascript
javascript unicode与GBK2312(中文)编码转换方法
2013/11/14 Javascript
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
jquery制作搜狐快站页面效果示例分享
2014/02/21 Javascript
JQuery遍历json数组的3种方法
2014/11/08 Javascript
在WordPress中加入Google搜索功能的简单步骤讲解
2016/01/04 Javascript
AngularJS 指令详细介绍
2016/07/27 Javascript
JS取数字小数点后两位或n位的简单方法
2016/10/24 Javascript
教你用十行node.js代码读取docx的文本
2017/03/08 Javascript
Ext JS 实现建议词模糊动态搜索功能
2017/05/13 Javascript
JS+HTML5实现图片在线预览功能
2017/07/22 Javascript
微信小程序实现全国机场索引列表
2018/01/31 Javascript
vue初始化动画加载的实例
2018/09/01 Javascript
小程序红包雨的实现示例
2019/02/19 Javascript
使用PYTHON接收多播数据的代码
2012/03/01 Python
Python实现的多叉树寻找最短路径算法示例
2018/07/30 Python
Python爬虫常用小技巧之设置代理IP
2018/09/13 Python
python爬虫获取新浪新闻教学
2018/12/23 Python
Django继承自带user表并重写的例子
2019/11/18 Python
使用Pandas将inf, nan转化成特定的值
2019/12/19 Python
Pycharm中安装wordcloud等库失败问题及终端通过pip安装的Python库如何添加到Pycharm解释器中(推荐)
2020/05/10 Python
详解向scrapy中的spider传递参数的几种方法(2种)
2020/09/28 Python
Dune London官网:英国著名奢华鞋履品牌
2017/11/30 全球购物
澳大利亚最大的网上油画销售画廊:Direct Art Australia
2018/04/15 全球购物
美团网旗下网上订餐平台:美团外卖
2020/03/05 全球购物
英国礼品和生活方式品牌:Treat Republic
2020/11/21 全球购物
机关党总支领导班子整改方案
2014/09/20 职场文书
个人工作表现评价材料
2014/09/21 职场文书
2014年科室工作总结范文
2014/12/19 职场文书
安装工程师岗位职责
2015/02/13 职场文书
2015年技术员工作总结
2015/04/10 职场文书
2015年质量管理工作总结范文
2015/05/18 职场文书