Python作为一种脚本语言,为了便于阅读和美观,需要强制缩进。它的数据类型可以自动转换,不需要像C、Java那样为变量定义数据类型,非常容易编写。它方便简单,因此受到大家的广泛欢迎。如今,Python已广泛应用于数据分析、数据挖掘、机器学习等诸多科学计算领域。所以既然涉及到科学计算,就需要对Python原生提供的数据结构有深刻的理解,这样才能在数据的海洋中游刃有余,得心应手。本文将从这里入手,做一个总结,方便收藏。Python1.序列结构首先介绍的数据结构是序列结构。所谓顺序,也就是元素的顺序很重要。元素顺序不同的序列是不同的序列。Python内置了六种序列结构,分别是list、tuple、string、unicode、buffer和xrange。1.1、list(list)列表,列表是一个序列,可以看做是一个数组,但与其他语言不同的是,Python列表中的元素可以是任意数据类型,如数字、字符串等。以下是创建列表结构的几种方法://1.通过将已知元素括在方括号中来创建listmylist=['orange','apple',1,2,3.14];//2。使用方括号创建空列表,然后使用append()追加动态元素mylist=[];mylist.append('orange');//3.通过list()方法创建一个空列表mylist=list();选择列表元素的方法://通过加方括号选择对应的下标,下标从0开始,-1为倒数第一个元素,依此类推mylist[0];mylist[-1];slice是Python中特有的序列结构Operation是指从一个序列中选择一个子序列,任何序列都可以被切片,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)元组和列表一样,可以看做是数组,元素可以是任何数据类型,甚至可以嵌套。唯一的区别是一旦创建了元组中的元素,就不能修改或追加它们。并且元组是使用括号创建的,元组也可以切片,切片方法和列表一样。//1。创建tuplemytuple=(1,3,'hello!')通过将已知元素括在括号中Elements://同列表,通过在括号中添加相应的下标来选择,下标从0开始,-1为第一个最后一个element,等等mytuple[0];mytuple[-1];1.3、unicode、buffer、xrange这四个字符串也是序列。由于它们不常用于科学计算,所以我不会过多介绍它们。string可以看成是少量单个字符的列表,如:mystring='orange';mylist=['o','r','a','n','g','e'];由于string也是一个序列,所以也可以分片。一个切片可以看作是一个由单个字符组成的列表切片。很多原理大同小异,就不过多介绍了。unicode类似于string,但它可以支持原生的unicode编码序列,例如\\u4f60\\u597d。Buffer可以看作是一个由大量字符组成的列表。xrange可以看作是一个纯数字列表。科学计算2.哈希结构所谓哈希结构与上面的序列结构不同。在哈希结构中,元素的顺序并不重要,顺序不同的哈希仍然是同一个哈希。哈希结构包括集合和字典。2.1、集合(set)集合、集合、集合是由不重复的元素组成的无序集合,重点是不重复,类似于数学中的集合。无序是散列结构的一个特点,而集合是散列结构,所以集合也具有无序的特点。创建集合的方法://和列表很像,可以参考一下//1.通过将已知元素括在花括号中来创建setmyset={'red','blue',2.71};//2。通过set()方法创建一个空集,注意不能使用{}创建一个空集,这会创建一个空的字典//3.然后使用add()添加动态元素,注意不是appendmyset=set();myset.add('yellow');Python的set集合可以支持并、交、差、对称差等数学运算://创建一个集合aa=set('abracadabra');//创建一个集合bb=set('alacazam');-----------------print(a)//Result:{'a','r','b','c','d'}----------------print(a-b);//差异set//result:{'r','d','b'}------------------print(a|b);//Union//Result:{'a','c','r','d','b','m','z','l'}-----------------print(a&b);//交集//结果:{'a','c'}------------------print(a^b);//对称difference//Result:{'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(dictionary)dict,字典,字典由键值对组成,具有唯一性和可变性。字典是可变对象,但字典的键是唯一的不可变对象。将字典视为键值对的集合的最佳方式。创建dict的方法://1.通过将键值对括在大括号中来创建dictmydict={'name':'tom','age':'24'};//2.通过dict()方法创建dictmydict=dict(name='tom',age=24);//3.通过大括号创建一个空的dict,然后通过括号添加键值对mydict={};mydict['tel']='1300000000';getdict中的元素://需要知道key的名字,否则获取不到,除非遍历mydict.get('tel');dict常用方法:dict.copy(),复制一个新的字典。dict.setdefault({'sex':'man'}),检查有没有,没有则增加。dict.update({'sex':'male'}),有就改,没有就增加。dict.pop('tel'),指定删除,参数必须有要删除的key。dict.clear(),清空字典。dict.keys(),查询字典中的所有键。dict.values(),查询字典中所有的值。dict.items(),查询字典中所有的键值对。以上是Python自带的数据结构。它分为两类:序列结构和哈希结构。序列结构包括list、tuple、string、unicode、buffer、xrange,哈希结构包括set、dict。
