资讯专栏INFORMATION COLUMN

Python数据结构——内建数据结构

Dr_Noooo / 2771人阅读

摘要:一列表是一个可以在其中存储一系列项目的数据结构。的项目之间需用逗号分开,并用一对中括号括将所有的项目括起来,以表明这是一个。序列不但支持负数下标还支持双下标,这对双下标表示一个区间。这种操作被称作切片操作。

一、列表(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", "Lisa", "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 95
Lisa is 85
Adam is 95
Lisa"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", "Lisa", "Bart", "Paul"])
# 判断对象是否在集合中
if "Bart" in s:
    print "Bart is in ?", "Bart" in s
# 使用copy函数来拷贝一个set
sc = s.copy()
# 往集合中添加对象
sc.add("Bill")
# 从集合中删除对象
sc.remove("Adam")
# 求两个集合的交集,也可以使用 s.intersection(sc)
print s & sc

输出的结果:

Bart is in ? True
set(["Lisa", "Paul", "Bart"])

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44192.html

相关文章

  • Python 基础篇 - Python入门

    摘要:除此之外的特定形式还有二进制序列类型,那么我们在这里所说的序列主要包含以下三种列表列表是一种可变序列,一般形式为,方括号内的各项间用逗号分隔。 引言 对于以前没有接触过任何编程语言的人来说,首先能明确编程的目的很重要,往往能明确一个目的,在日后的学习中遇到困难时心态就会轻松许多。当今计算机文化的多元化发展,涌现出了大数据、分布式计算、神经网络、机器学习等众多新概念,即便这样,任何意义上...

    VioletJack 评论0 收藏0
  • Python 基础篇 - 简单数据处理I

    摘要:获取怎样的数据在这里首先需要考虑,我们的四则运算计算器的计算复杂度是如何的是仅能计算两个数值的简单运算,如还是能进行混合四则运算,如那么你想处理运算的复杂程度就决定了你想获取怎样的数据,这是很实际的问题。 引言 在上一篇文章的介绍中,我们提及了Python的三种基本数据类型,如文章末尾所说,Python中的内建数据类型并不仅仅是这几种,但其实我从接触Python到现在,往往就是这几种简...

    msup 评论0 收藏0
  • Python入门-函数

    摘要:函数返回值支持多个,返回多个时,使用逗号分隔。如上,与这个参数按照由左到右依次赋值给形参和供函数内部使用。在传入函数时,便是将这个引用传入了函数。需要使用关键字声明将变量作用域变为函数外部非全局变量,及闭包作用域。 < 返回索引页 函数 函数定义 返回值 函数的调用 函数的参数 顺序参数 参数的默认值 可变参数 关键字参数 参数的组合 参数的专递 函数作用域 内建...

    genefy 评论0 收藏0
  • Python基础之(一)基本数据类型

    摘要:但是在转化中,浮点数转化为二进制后,不会精确等于十进制的。一般情况下,只要简单地将最终显示的结果用四舍五入到所期望的十进制位数,就会得到期望的最终结果。四舍五入内建函数。在中的第二个数,表示要保留的小数位数,返回值是一个四舍五入之后的数值。 数字 基本类型 首先,进入Python交互模式中: //整数 >>> 3 3 //长整数 >>> 3333333333333333333333...

    yagami 评论0 收藏0
  • [这段代码很Pythonic]Python中的内建函数(Built_in Funtions)

    摘要:前言在官方文档的标准库章节中,第一节是简介,第二节就是,可见内建函数是标准库的重要组成部分,而有很多内建函数我们平时却很少用到或根本就不知道原来还有这么好用的函数居然直接就可以拿来用。接下来为大家介绍一些我认为被大家忽略掉的内建函数。 前言 在Python官方文档的标准库章节中,第一节是简介,第二节就是Built_in Functions,可见内建函数是Python标准库的重要组成部分...

    zgbgx 评论0 收藏0

发表评论

0条评论

Dr_Noooo

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<