首先,我们要知道什么是数据?也许我们会望文生义地认为数据就是一些数,真的是这样吗?下面是用随机数模块生成的一些数(程序代码附录1),它们是数据吗?
上面这些虽然是数,只是杂乱无章的一些数,而不是数据,因为它们根本就没有啥意思。“有意思”才是数据的根本。
现在天气比较冷,小明想进一批羽绒服售卖,但不知道各种颜色的羽绒服分别要进多少货,于是他到街上记录行人的羽绒服颜色,笔记如下:
(1)红色:98,
(2)蓝色:20,
(3)黄色:90,
(4)白色:50,
(5)绿色:30,
(6)黑色:56。
小明记录下来的是数据吗?当然是。但里面不单单是数,是的,数据不一定是数。数据是信息的载体。
信息又是什么呢?我们都很熟悉“对牛弹琴”的典故。一首美妙的旋律,传给我们听觉上的美感,但对于牛可能毫无意义。也就是说,对于人,这旋律是信息,对于牛就不是了。信息是个“元概念”,只可意会不可言传。
“载体”又是什么呢?这概念是清晰的——承载的实体。一篇有关全球气候变暖的论文打印在一张纸上。这篇论文的文字载体是这张纸;这篇论文所传递的信息的载体是这纸上的文字;也可以认为这张纸是信息的间接载体。可见,信息的载体往往是一些符号或图像,即使这些符号或图像是实物做的,例如广告牌,但信息的载体是这些实物上的符号或图像而不是实物本身。
一边是看不见摸不着的“信息”,一边是可看见、可听见或可触摸的实物,“数据”在它们之间架起了桥梁。数据的重要性就不言而喻了。
数据那么重要,我们一定要研究它。但发现无从下手,因为数据混沌不分。为了研究数据,我们创造了“数据元素”作为数据的基本单位。上面小明记录行人羽绒服颜色的纸上也记录了行程和消费,笔记如下:
(1)红色:98,
(2)蓝色:20,
(3)黄色:90,
(4)白色:50,
(5)绿色:30,
(6)黑色:56。
早上到北京路,在小青早餐店吃早餐,用20元。中午到红旗路,在旺旺餐厅吃饭,用80元。下午到广康路。
很自然,为了研究他的这份“数据”,先把它分为三部分:
第一部分,羽绒服颜色:
(1)红色:98,
(2)蓝色:20,
(3)黄色:90,
(4)白色:50,
(5)绿色:30,
(6)黑色:56。
第二部分,行程:
早上到北京路,在小青早餐店吃早餐,中午到红旗路,在旺旺餐厅吃饭,下午到广康路。
第三部分,消费:
吃早餐,用20元,吃午饭,用80元。
若每个部分再往下分,表达的意思就不完整了。也就是说,数据元素是能表达一个完整信息的最少载体,通常作为一个整体进行考虑。上面小明的笔记就有三个数据元素。
一个数据元素可由若干数据项组成,也称为节点或记录。比如:上面的“(1)红色:98”就是一项数据项。
小明的调查活动,产生了三个数据元素——羽绒服颜色、行程和消费,这三个数据元素构成了小明的调查活动的数据。数据结构是相互之间存在一种或者多种特定关系的数据元素的集合。在任何问题中,数据结构中的数据元素都不是独立存在的,它们之间存在某种关系,这种关系称为结构。
数据结构包含逻辑结构、存储结构(物理结构)和运算三个要素;数据结构的逻辑结构和存储结构密不可分,一个算法的设计取决于所选的逻辑结构,算法的时间则依赖于所采用的存储结构。后续课程中继续讨论。
参考资料:
1、《Python算法图解》何韬编著 清华大学出版社
附录1:
import random
for i in range(5):
for j in range(10):
print(random.randint(1, 10000), end="\t")
print("")