5 集合

前述章节里讲解了整形、浮点、字符串等基本数据类型又称元数据类型,这些类型的数据一个是一个不可再被分解,一个数据表示一个信息,简单。随着对Python或其他语言学习的深入,这种单纯的元数据类型难以描述复杂的信息,需要基于这些基本(元)数据类型进行整合,“创造出”新的数据类型来描述计算机要处理的问题所需描述的信息,集合就是其中的一种。

集合其实是一堆基本数据类型用特定的符号(通常是括号:圆括号、花括号、方括号等)将这堆数据作为一个整体来处理,在C语言里要求数据的类型必须一样,而可爱的Python较为宽容或者说不严谨,允许这一堆数据构造出的新类型里的各个数据的类型可以不一样。

常见的集合有列表list、字符串、元组tuple、字典dict、集set这几种。

5.1 集合的分类

Python内建的集合类,有有序和无序之分,还有可修改和不可修改之分。

5.1.1 有序和无序

有序是说某数据集合中的每个元素都有一个位置信息,通常用index表示,可以借助这种集合类型名和位置信息访问集合里的某元素值,在Python里有序集合有list列表、string字符串和元组tuple。这三类的集合中的每个元素都有位置坐标信息,借助位置坐标信息可以快速访问这三类集合的某元素值,这可以类比于C语言的数组和字符串集合类型。

而无序集合有字典dict、集set这两种比较常使用,这两类数据类型不可通过位置坐标信息随意访问任何位置处的数据。

5.1.2 可修改和不可修改

可不可修改的意思即是该集合是只读的还是可以修改的。在Python里列表list、字典dict和集set是可以修改、更新的;而字符串、元组tuple则是不可以修改的。

5.2 示例

本章所涉及的各个集合类型会在后续章节里逐步展开,这里仅以较常见的字符串为例,讲解、演示一下有序、无序以及可修改、不可修改的基本概念。

s = "hello world"
print s[0]
print s
s[0] = 'H'
print s

程序执行结果

h
hello world
Traceback (most recent call last):
  File "bb.py", line 4, in <module>
    s[0] = 'H'
TypeError: 'str' object does not support item assignment

程序出错在代码第4行即s[0] = 'H'这行代码想修改字符串s的第0位置处的'h'为'H',由于字符串s是只读的,是不能修改的。代码第2行print s[0]这行并没有报错,0的意思是访问字符串s的第0位置处的元素值即'h',由此可见字符串是有序的且是只读不可修改的。

5.3 总结

本章主要理解有序、无序以及只读、可修改等基本概念即可,知道Python里有一些内建的数据集合类(型)。有关各个集合后续章节会陆续展开。