数据种类
如果我们的目标是构建一个文件管理系统,想象一下,我们的文件应该如何管理呢? 你需要给每一个文件都命名,把文件都统一放入一个文件夹中进行管理,不同文件夹可能存放着不同文件批次, 这样的管理是不是更有效呢?
List 列表¶
列表是我们最常用的一种存储数据机制。它就像一个抽屉一样,存放着各种信息,每一格都是一个存储单元,每一格都可以单独获取。
在列表中,既然你已经把东西按顺序存放到抽屉中了,那你就可以按照顺序拿到你存放的东西。 在Python中,我们将上面的数字号叫做 index 索引。现实中第1个位置的东西,在Python中,是第0位。 所以Python的第一个索引永远都是 0。 除了正着来取东西,我们完全也可以反着来取东西,第一个反着取的序号是 -1。以此类推,-3 这个索引就是倒着数第三个。
而且在Python中,还很方便的可以一次性拿到多个抽屉的结果。比如下面我们就来演示一下取从多少位到多少位的东西。
到这里,我们才只讲了怎么选取抽屉中的东西,但是我的心情变得比天还快,无时无刻都想换抽屉的东西,比如抽屉里的衣服每天都有变动。
虽然我们还没讲,但是从这个运行结果不难看出,在列表中,你可以存放不同类型的元素,字符,数字,甚至列表里还能有列表。 所以这个抽屉还挺万能的。
再一次,虽然我们还没讲,但是你看我在上面改动了一下这个列表中的列表元素,在选取信息的时候,我做了两次索引。这在列表中是能被支持的操作。
Dict 字典¶
有像抽屉的这种列表 List 真好,我们就能有组织地存放好以后会要用到的数据了,而且相比一个变量一个变量的存储,明显要高效很多。 但是你有没有发现一个问题,我在找抽屉的时候,经常会忘了我东西放在哪个抽屉。面对一排抽屉, 我只有一个个打开,检查,才知道要用的东西是不是放在这个抽屉中。
没事,好在人类是聪明的,我们发明了标签,给你的抽屉贴上一个标签,这样下次再找的时候,立马就能根据标签找到正确抽屉的位置。
这种标签抽屉的定位,就是Python中字典 Dict 的意思了。而且有意思的是,字典除了用一个词来代表一个存放坑位
,另外,这个坑位
也是多样的, 从下面的例子中你可以看到,files
中,每个元素都有一个标签,或者 Key
,对应着这个 Key
,存放着他们的值 Value
。
这个字典中的 key 都是唯一的,如果你的抽屉出现了重名,我相信你应该也不知道到底是哪个抽屉放着想要找的东西吧。 而 value 是多样的,你可以放一个字符,一个数字,甚至一个列表,甚至是另一个字典。当你想要索引的时候,用 key 就能找到里面的内容。
快去尝试一下,如果在索引的时候,索引到了一个不存在的 key(比如news
),会发生什么情况呢?
同列表,字典也是可以修改的,通过 key 我们就能将对应的 value 进行修改。 注意哦,在字典中的元素不像列表,字典元素是没有顺序的, 如果你想要有顺序,Python里的 OrderedDict 是你想要搜索的关键词,我在这个教程里就不讲了。
在本个教程的结尾我们还能看到更多字典和列表功能的用法。
Tuple 元组¶
看过了列表和字典,我们再来介绍一下元组 Tuple,元组从使用频率上来说,并没有字典列表用得频繁。为什么呢?最终原因是元组没有他们那么多样, 他的功能比较单一,基本上用元组的地方都能用列表代替。但是元组有它一个唯一的独特性,就是它里面的东西不可变,定下来就定下来了,不让你变。
什么情况下,我们才会喜欢用元组这种模式呢?答案也很简单,就是如果我们不希望它的值被改变的时候,比如有些常数,或固定值, 我们就希望它不能改变,特别是你的代码要给别人使用的时候,你没法控制,也不希望他们改变你的这些固定值。
Set 合集¶
Set更有意思,我们很常用在去重的时候,因为 set 里面只会存在非重复的元素,不管你往里面加了多少相同元素,这些相同元素都会坍缩成一个。 这种特性,我们就可以运用它来做交集并集等操作。注意哦,在集合中的元素,其实是没有顺序的。
在初始化 set 的时候还有个更简便的写法,它和字典长得很像。下面我们初始化另一个以后,拿它做些交集并集的操作吧。
set 还有很多功能,我这里就不一一列举了,常用的是上面这些,如果你需要更详细的内容,就自己去搜索一下官方文档吧~
在循环中运用¶
上面这些,特别是列表和字典,是经常和循环一起用的,毕竟如果要手写对每一个元素的加工,那是一件相当复杂的工作。所以我们可以在循环中批量处理。 注意,下面的 len(files)
给出的是这个 files
列表的长度,我们常用在循环中。
其实还能再简化一些,直接将 files
放入循环里。这样我们就不需要再去索引一遍 files
而是直接将 files
里面的值在 for
的时候就一一拿出来了。
同样,字典也能和 for
进行简化的应用。我们只需要调用 dict.items()
, dict.keys()
, dict.values()
分别取字典的某些部分就能简化 for
循环了。
自带功能¶
列表和字典远远还没有结束哦,他们的功能其实挺丰富的。和 for
一起循环,我们来演示一下常用的一些列表,字典的功能函数吧。 第一个要介绍的是怎么往列表里面添加和pop
值。
当然还有很多,我们下面一一举一些比较常用的功能。
字典也是,也有额外的一些常用功能,比如get()
, update()
等,我下面在补充一下。