数据种类 - 交互式学Python | 莫烦Python

数据种类

作者: 莫烦 编辑: 莫烦 2021-05-01

如果我们的目标是构建一个文件管理系统,想象一下,我们的文件应该如何管理呢? 你需要给每一个文件都命名,把文件都统一放入一个文件夹中进行管理,不同文件夹可能存放着不同文件批次, 这样的管理是不是更有效呢?

List 列表

列表是我们最常用的一种存储数据机制。它就像一个抽屉一样,存放着各种信息,每一格都是一个存储单元,每一格都可以单独获取。

list

在列表中,既然你已经把东西按顺序存放到抽屉中了,那你就可以按照顺序拿到你存放的东西。 在Python中,我们将上面的数字号叫做 index 索引。现实中第1个位置的东西,在Python中,是第0位。 所以Python的第一个索引永远都是 0。 除了正着来取东西,我们完全也可以反着来取东西,第一个反着取的序号是 -1。以此类推,-3 这个索引就是倒着数第三个。

而且在Python中,还很方便的可以一次性拿到多个抽屉的结果。比如下面我们就来演示一下取从多少位到多少位的东西。

到这里,我们才只讲了怎么选取抽屉中的东西,但是我的心情变得比天还快,无时无刻都想换抽屉的东西,比如抽屉里的衣服每天都有变动。

虽然我们还没讲,但是从这个运行结果不难看出,在列表中,你可以存放不同类型的元素,字符,数字,甚至列表里还能有列表。 所以这个抽屉还挺万能的。

再一次,虽然我们还没讲,但是你看我在上面改动了一下这个列表中的列表元素,在选取信息的时候,我做了两次索引。这在列表中是能被支持的操作。

Dict 字典

有像抽屉的这种列表 List 真好,我们就能有组织地存放好以后会要用到的数据了,而且相比一个变量一个变量的存储,明显要高效很多。 但是你有没有发现一个问题,我在找抽屉的时候,很常会忘我的哪个东西放在哪个抽屉。面对一排抽屉, 我只有一个个打开,检查,才知道要用的东西是不是放在这个抽屉中。

没事,好在人类是聪明的,我们发明了标签,给你的抽屉贴上一个标签,这样下次再找的时候,立马就能根据标签找到正确抽屉的位置。

draw_label

这种标签抽屉的定位,就是Python中字典 Dict 的意思了。而且有意思的是,字典除了用一个词来代表一个存放坑位,另外,这个坑位也是多样的, 从下面的例子中你可以看到,files 中,每个元素都有一个标签,或者 Key,对应着这个 Key,存放着他们的值 Value

这个字典中的 key 都是唯一的,如果你的抽屉出现了重名,我相信你应该也不知道到底是哪个抽屉放着想要找的东西吧。 而 value 是多样的,你可以放一个字符,一个数字,甚至一个列表,甚至是另一个字典。当你想要索引的时候,用 key 就能找到里面的内容。

快去尝试一下,如果在缩索引的时候,索引到了一个不存在的 key(比如news),会发生什么情况呢?

同列表,字典也是可以修改的,通过 key 我们就能将对应的 value 进行修改。 注意哦,在字典中的元素不像列表,字典元素是没有顺序的, 如果你想要有顺序,Python里的 OrderedDict 是你想要搜索的关键词,我在这个教程里就不讲了。

在本个教程的结尾我们还能看到更多字典和列表功能的用法。

Tuple 元组

看过了列表和字典,我们再来介绍一下元组 Tuple,元组从使用频率上来说,并没有字典列表用得频繁。为什么呢?最终原因是元组没有他们那么多样, 他的功能比较单一,基本上用元组的地方都能用列表代替。但是元组有它一个唯一的独特性,就是它里面的东西不可变,定下来就定下来了,不让你变。

drawer samples

什么情况下,我们才会喜欢用元组这种模式呢?答案也很简单,就是如果我们不希望它的值被改变的时候,比如有些常数,或固定值, 我们就希望它不能改变,特别是你的代码要给别人使用的时候,你没法控制,也不希望他们改变你的这些固定值。

Set 合集

Set更有意思,我们很常用在去重的时候,因为 set 里面只会存在非重复的元素,不管你往里面加了多少相同元素,这些相同元素都会坍缩成一个。 这种特性,我们就可以运用它来做交集并集等操作。注意哦,在集合中的元素,其实是没有顺序的。

在初始化 set 的时候还有个更简便的写法,它和字典长得很像。下面我们初始化另一个以后,拿它做些交集并集的操作吧。

set 还有很多功能,我这里就不一一列举了,常用的是上面这些,如果你需要更详细的内容,就自己去搜索一下官方文档吧~

在循环中运用

上面这些,特别是列表和字典,是经常和循环一起用的,毕竟如果要手写对每一个元素的加工,那是一件相当复杂的工作。所以我们可以在循环中批量处理。 注意,下面的 len(files) 给出的是这个 files 列表的长度,我们常用在循环中。

其实还能在简化一些,直接将 files 放入循环里。这样我们就不需要再去索引一遍 files 而是直接将 files 里面的值在 for 的时候就一一拿出来了。

同样,字典也能和 for 进行简化的应用。我们只需要调用 dict.items(), dict.keys(), dict.values() 分别取字典的某些部分就能简化 for 循环了。

自带功能

列表和字典远远还没有结束哦,他们的功能其实挺丰富的。和 for 一起循环,我们来演示一下常用的一些列表,字典的功能函数吧。 第一个要介绍的是怎么往列表里面添加和pop值。

当然还有很多,我们下面一一举一些比较常用的功能。

字典也是,也有额外的一些常用功能,比如get(), update()等,我下面在补充一下。


降低知识传递的门槛

莫烦很常从互联网上学习知识,开源分享的人是我学习的榜样。 他们的行为也改变了我对教育的态度: 降低知识传递的门槛免费 奉献我的所学正是受这种态度的影响。 通过 【赞助莫烦】 能让我感到认同,我也更有理由坚持下去。