Python 基础--数据结构

数据结构(Data Structures)基本上人如其名----它们只是一种结构,能够将一些数据聚合在一起。换句话说,它们是用来存储一系列相关数据的集合。

Python 中有四种内置的数据结构----列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)。我们将了解如何使用它们,并利用它们将我们的编程之路变得更加简单。

1. 列表

列表 是一种用于保存一系列有序项目的集合,也就是说,你可以利用列表保存一串项目的序列。想象起来也不难,你可以想象你有一张购物清单,上面列出了需要购买的商品,除开在购物清单上你可能为每件物品都单独列一行,在 Python 中你需要在它们之间多加上一个逗号。

项目的列表应该用方括号括起来,这样 Python 才能理解到你正在指定一张列表。一旦你创建了一张列表,你可以添加、移除或搜索列表中的项目。既然我们可以添加或删除项目,我们会说列表是一种*可变的(Mutable)*数据类型,意即,这种类型是可以被改变的。

2. 有关对象与类的快速介绍

虽然到目前为止我经常推迟有关对象(Object)与类(Class)的讨论,但现在对它们进行稍许解释能够有助于你更好地理解列表。我们将在后面的章节讨论有关它们的更多细节。

列表是使用对象与类的实例。当我们启用一个变量 i 并将整数 5 赋值给它时,你可以认为这是在创建一个 int 类(即类型)之下的对象(即实例) i。实际上,你可以阅读 help(int) 来了解更多内容。

一个类也可以带有方法(Method),也就是说对这个类定义仅对于它启用某个函数。只有当你拥有一个属于该类的对象时,你才能使用这些功能。举个例子,Python 为 list 类提供了一种 append 方法,能够允许你向列表末尾添加一个项目。例如 mylist.append('an item') 将会向列表 mylist 添加一串字符串。在这里要注意到我们通过使用点号的方法来访问对象。

一个类同样也可以具有字段(Field),它是只为该类定义且只为该类所用的变量。只有当你拥有一个属于该类的对象时,你才能够使用这些变量或名称。字段同样可以通过点号来访问,例如 mylist.field

案例(保存为 ds_using_list.py):

# This is my shopping list
shoplist = ['apple', 'mango', 'carrot', 'banana']

print('I have', len(shoplist), 'items to purchase.')

print('These items are:', end=' ')
for item in shoplist:
    print(item, end=' ')

print('\nI also have to buy rice.')
shoplist.append('rice')
print('My shopping list is now', shoplist)

print('I will sort my list now')
shoplist.sort()
print('Sorted shopping list is', shoplist)

print('The first item I will buy is', shoplist[0])
olditem = shoplist[0]
del shoplist[0]
print('I bought the', olditem)
print('My shopping list is now', shoplist)

输出:

$ python ds_using_list.py
I have 4 items to purchase.
These items are: apple mango carrot banana
I also have to buy rice.
My shopping list is now ['apple', 'mango', 'carrot', 'banana', 'rice']
I will sort my list now
Sorted shopping list is ['apple', 'banana', 'carrot', 'mango', 'rice']
The first item I will buy is apple
I bought the apple
My shopping list is now ['banana', 'carrot', 'mango', 'rice']

变量 shoplist 是一张为即将前往市场的某人准备的购物清单。在 shoplist 中,我们只存储了一些字符串,它们是我们需要购买的物品的名称,但是你可以向列表中添加任何类型的对象,包括数字,甚至是其它列表。

我们还使用 for...in 循环来遍历列表中的每一个项目。学习到现在,你必须有一种列表也是一个序列的意识。有关序列的特性将会在稍后的章节予以讨论。

在这里要注意在调用 print 函数时我们使用 end 参数,这样就能通过一个空格来结束输出工作,而不是通常的换行。

接下来,如我们讨论过的那般,我们通过列表对象中的 append 方法向列表中添加一个对象。然后,我们将列表简单地传递给 print 函数,整洁且完整地打印出列表内容,以此来检查项目是否被切实地添加进列表之中。

接着,我们列表的 sort 方法对列表进行排序。在这里要着重理解到这一方法影响到的是列表本身,而不会返回一个修改过的列表----这与修改字符串的方式并不相同。同时,这也是我们所说的,列表是可变的(Mutable)而字符串是不可变的(Immutable)

随后,当我们当我们在市场上买回某件商品时,我们需要从列表中移除它。我们通过使用 del 语句来实现这一需求。在这里,我们将给出我们希望从列表中移除的商品,del 语句则会为我们从列表中移除对应的项目。我们希望移除列表中的第一个商品,因此我们使用 del shoplist[0](要记住 Python 从 0 开始计数)。

如果你想了解列表对象定义的所有方法,可以通过 help(list) 来了解更多细节。

3. 元组

元组(Tuple)用于将多个对象保存到一起。你可以将它们近似地看作列表,但是元组不能提供列表类能够提供给你的广泛的功能。元组的一大特征类似于字符串,它们是不可变的,也就是说,你不能编辑或更改元组。

元组是通过特别指定项目来定义的,在指定项目时,你可以给它们加上括号&

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值