浅析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发送email的3种方法
Apr 28 Python
Python 正则表达式入门(中级篇)
Dec 07 Python
Python实现时钟显示效果思路详解
Apr 11 Python
浅谈pyqt5在QMainWindow中布局的问题
Jun 21 Python
在python image 中安装中文字体的实现方法
Aug 22 Python
Tensorflow实现多GPU并行方式
Feb 03 Python
python实现TCP文件传输
Mar 20 Python
Python unittest单元测试openpyxl实现过程解析
May 27 Python
pytorch中的weight-initilzation用法
Jun 24 Python
Django封装交互接口代码
Jul 12 Python
基于Python实现全自动下载抖音视频
Nov 06 Python
解决Python import .pyd 可能遇到路径的问题
Mar 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
Smarty日期时间操作方法示例
2016/11/15 PHP
PHP使用DOM和simplexml读取xml文档的方法示例
2017/02/08 PHP
JavaScript DOM 学习第三章 内容表格
2010/02/19 Javascript
js post方式传递提交的实现代码
2010/05/31 Javascript
js定时器怎么写?就是在特定时间执行某段程序
2013/10/11 Javascript
简介JavaScript中的unshift()方法的使用
2015/06/09 Javascript
尝试动手制作javascript放大镜效果
2015/12/25 Javascript
jQuery中的基本选择器用法学习教程
2016/04/14 Javascript
教你JS中的运算符乘方、开方及变量格式转换
2016/08/09 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
jQuery实现带遮罩层效果的blockUI弹出层示例【附demo源码下载】
2016/09/14 Javascript
使用JQuery选择HTML遍历函数的方法
2016/09/17 Javascript
Javascript highcharts 饼图显示数量和百分比实例代码
2016/12/06 Javascript
vue2.0父子组件及非父子组件之间的通信方法
2017/01/21 Javascript
DOM事件探秘篇
2017/02/15 Javascript
简单实现js放大镜效果
2017/07/24 Javascript
详解如何将 Vue-cli 改造成支持多页面的 history 模式
2017/11/20 Javascript
Vue 中使用vue2-highcharts实现曲线数据展示的方法
2018/03/05 Javascript
使用vue-cli(vue脚手架)快速搭建项目的方法
2018/05/21 Javascript
Vue+Django项目部署详解
2019/05/30 Javascript
Smartour 让网页导览变得更简单(推荐)
2019/07/19 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
2021/02/04 jQuery
python函数中return后的语句一定不会执行吗?
2017/07/06 Python
Django中使用haystack+whoosh实现搜索功能
2019/10/08 Python
python 表格打印代码实例解析
2019/10/12 Python
Python中filter与lambda的结合使用详解
2019/12/24 Python
html5教程调用绘图api画简单的圆形代码分享
2013/12/04 HTML / CSS
翻新二手苹果产品的网络领导者:Mac of all Trades
2017/12/19 全球购物
美国高端牛仔品牌:Silver Jeans
2019/12/12 全球购物
捷科时代的软件测试笔试题
2015/11/09 面试题
端午节粽子促销活动方案
2014/02/02 职场文书
电子商务专业毕业生求职信
2014/06/12 职场文书
教师党员自我剖析材料
2014/09/29 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书
2019银行员工个人工作自我鉴定
2019/06/27 职场文书
vite+vue3.0+ts+element-plus快速搭建项目的实现
2021/06/24 Vue.js