Python内建数据结构详解

Python内建数据结构详解,第1张

概述一、列表(List)list是一个可以在其中存储一系列项目的数据结构。list的项目之间需用逗号分开,并用一对中括号括将所有的项目括起来,以表明这是一个list。下例用以展示list的一些基本 *** 作:

一、列表(List)

List 是一个可以在其中存储一系列项目的数据结构。List 的项目之间需用逗号分开,并用一对中括号括将所有的项目括起来,以表明这是一个 List 。下例用以展示 List 的一些基本 *** 作:

# 定义一个 List 对象 class_List:class_List = ['Michael','Bob','Tracy']# 获得一个 class_List 的长度print 'class have',len(class_List),'students'# 访问class_List中的对象print 'The 3rd student in class is',class_List[2]# 往 class_List 中插入对象class_List.append('Paul')# 从 class_List 中删除一个项目del class_List[0]# 对 class_List 进行排序class_List.sort()# 遍历整个class_List中的项目print 'These students are :',for student in class_List:  print student,

输出结果为:

class have 3 students
The 3rd student in class is Tracy
These students are : Bob Paul Tracy

关于上面的代码有几点要注意的是:

可以往 class_List 中加入任何类型的对象,也就是说,并不要求一个 List 中的项目具有相同类型。你甚至可以往 class_List 中插入一个List。
排序函数作用于本身, 而不是返回一个副本,这与字符串类型是不同的,因为字符串不可修改。
print 函数的end关键字参数用来指定输入完成之后的输出,默认是换行符,上面的代码用空格符替代换行符。

二、元组(Tuple)

tuple 在用法与概念上与 List 没有多大差别,可以将 tuple 看做是一个只读版List。也就是说tuple一经定义便不能被修改――不能添加和删除对象,也不能修改tuple中的对象。

tuple中的项同样应该用逗号分开,并用圆括号将这些项目括起来以表是是一个tuple。这个圆括号是可选的,也就是说可以用以下两种方式定义一个tuple:

t = 'Adam','lisa','bart'
t = ('Adam','bart')
不过省掉那对圆括号不见得是什么好的习惯。另外当tuple只有一个项时,第一项之后必须有一个逗号,该情况下应该这样定义t = ('Adam',)。这似乎是一个古怪的约束,但是假如没有这个逗号,不带括号定义的tuple就变成了t = 'Adam'这明显具有二义性。

三、字典(Dictionary)

字典可以看做是一组键-值(key-value)对的集合。键必须是唯一的,而每一个键关联着一个值。key必须是一个不可变的对象(如:tuple、数值型、字符串)。还要注意的是,在字典中的键值对并没有以任何方式进行排序。

一个字典的定义应该照这样的格式d={key1 : value1,key2 : value2,key3 : value3}。键和值之间用冒号分隔,而键值对之间用逗号相隔,再用大括号将所有的键值对括起来。一些基本 *** 作如下:

# 字典的定义d = {  'Adam': 95,'lisa': 85,'bart': 59}# 通过键来获取值print "Adam's score is",d['Adam']# 删除一个键值对del d['bart']# 遍历字典for name,score in d.items():  print '{0} is {1}'.format(name,score)# 往字典中增加一个键值对d['Paul'] = 72# 判断字典中是否存在某键,也可以用 if ab.has_key('lisa')if 'lisa' in d:  print "lisa's address is",d['lisa']

输出的结果为:

Adam's score is 95lisa is 85Adam is 95lisa's address is 85

四、序列(Sequences)

上面介绍的三种内建数据结构都是序列,索引 *** 作是序列的一个基本 *** 作。通过下标 *** 作可以直接访问序列中的对象。上面虽然已经演示了下标 *** 作――队列和元组用数字下标,字典用关键字下标。

序列的下标是从0开始的,上面的例子中只使用了下标为正数的情况,其实下标还可以为负数,如-1,-2,-3…。负数下标表示的意义为反方向的位置,如class_List[-1]返回的是class_List的倒数第一个项目。

序列不但支持负数下标还支持双下标,这对双下标表示一个区间。如class_List[0:3]返回的是一个class_List中从下标为1到下标为3之前的子序列副本。注意这个区间是一对半闭半开的区间。这种 *** 作被称作切片 *** 作(slicing operation)。如果切片 *** 作的第二个下标超出了序列的范围,那么切片 *** 作会到序列的末尾终止。切片 *** 作中的两个下标都有默认值,第一个的默认值为0,第二个的大小为序列的长度。

还可以给切片 *** 作提供第三个参数,第三个参数代表切片 *** 作的步长,它的默认值是1。步长代表了项与项之间的间距,比方name[0:10:3],返回的就是name中下标为0,3,6,9组成的子序列。

五、集合(Set)

集合是无序简单对象的聚集。当你只关注一个对象是否存在于聚集中,而不管它存在的顺序或在出现的次数时,则适宜用集合。基本功能:判断是否是集合的成员、一个集合是不是另一个集合的子集、获取两个集合的交集等等。实例:

s = set(['Adam','bart','Paul'])# 判断对象是否在集合中if 'bart' in s:  print "bart is in ?",'bart' in s# 使用copy函数来拷贝一个setsc = s.copy()# 往集合中添加对象sc.add('Bill')# 从集合中删除对象sc.remove('Adam')# 求两个集合的交集,也可以使用 s.intersection(sc)print s & sc

输出的结果:

bart is in ? Trueset(['lisa','Paul','bart'])

总结

以上是内存溢出为你收集整理的Python内建数据结构详解全部内容,希望文章能够帮你解决Python内建数据结构详解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1204806.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存