|
|
51CTO旗下网站
|
|
移动端

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

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

作者:第零区块来源:今日头条|2019-08-27 10:33

【大咖·来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》

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

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

Python

一、序列结构

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

1.1、list(列表)

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

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

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

选取list元素的方法:

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

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

  1. //通过[begin:end]方式完成切片 
  2. mylist = [1,2,3,4,5]; 
  3. 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. //1.通过小括号括起已知的元素创建tuple 
  2. mytuple = (1, 3, 'hello!'
  3. //2.不可以用append()往tuple追加,因为tuple一旦创建,不可变更 

获取tuple中的元素:

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

1.3、string,unicode,buffer,xrange

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

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

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

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

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

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

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

最全整理,值得收藏!Python语言自带的数据结构有哪些?

科学计算

二、散列结构

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

2.1、set(集合)

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

创建set的方法:

  1. //和list很类似,可对应参考 
  2. //1.通过大括号括起已知的元素创建set 
  3. myset = {'red','blue',2.71}; 
  4. //2.通过set()方法创建空set,注意不能用{}创建空set,这样创建的是空dict 
  5. //3.然后用add()添加动态元素,注意不是append 
  6. myset = set(); 
  7. myset.add('yellow'); 

Python的set集合可以支持并集,交集,差集,对称差等数学运算:

  1. //创建集合a 
  2. a = set('abracadabra'); 
  3. //创建集合b 
  4. b = set('alacazam'); 
  5. ------------------ 
  6. print(a) 
  7. //结果:{'a''r''b''c''d'
  8. ------------------ 
  9. print(a - b); //差集 
  10. //结果:{'r''d''b'
  11. ------------------ 
  12. print(a | b); //并集 
  13. //结果:{'a''c''r''d''b''m''z''l'
  14. ------------------ 
  15. print(a & b); //交集 
  16. //结果:{'a''c'
  17. ------------------ 
  18. print(a ^ b); //对称差 
  19. //结果:{'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. //1.通过大括号括起键值对创建dict 
  2. mydict = {'name':'tom','age':'24'}; 
  3. //2.通过dict()方法创建dict 
  4. mydict = dict(name = 'tom',age = 24); 
  5. //3.通过大括号创建空dict,然后通过中括号添加键值对 
  6. mydict = {}; 
  7. mydict['tel'] = '1300000000'

获取dict中的元素:

  1. //需要已经知道键的名称,否则无法获取,除非遍历 
  2. 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。

【编辑推荐】

  1. Python 真的勒死 R 了吗?
  2. 为什么学了这么久Python,还是写不出项目?3招帮你解决这个问题
  3. Python正在蚕食全世界
  4. 是时候对 Python2 说“拜拜了”
  5. 最全 14 张思维导图:教你构建 Python 编程的核心知识体系!
【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

这就是5G

这就是5G

5G那些事儿
共15章 | armmay

111人订阅学习

16招轻松掌握PPT技巧

16招轻松掌握PPT技巧

GET职场加薪技能
共16章 | 晒书包

371人订阅学习

20个局域网建设改造案例

20个局域网建设改造案例

网络搭建技巧
共20章 | 捷哥CCIE

755人订阅学习

读 书 +更多

Java EE 5 开发指南

本书是对Java EE各种技术之间互相协作的概览和补充。 本书还展示了如何编写JavaServer Page(JSP)页面或者企业级JavaBean(EJB):探讨了...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微