接连两天的一中期末考试终于结束了,这意味着——史上最长暑假要开始了!(也意味着可以吃棒冰和睡午觉了)
就在FIFA世界杯进行地如火如荼之时,小八还抽出时间读掉了整整6大本python书籍,混杂的语法塞得满脑子都是,差点把刚背的历史全挤了出去。不过,小八终于意识到了一个程序并不是精简就可以使运行速度加快的,关键是看时间级别。比如说那个append和insert问题,看起来insert比append+reserve缩短了一半,但前者是列表的遍历,是线性级运算时间,但后者仅是哈希表(hash)的修改,是常数级时间,所以在进行大数据计算时,insert比append慢了近200倍也就不足为奇了——当然,具体原因这次还是不剧透。。。
还是回到正题上来吧(讲着讲着就偏了),这一次小八将讲解python中重要的数据——列表。
之前在scratch中你应该已经接触过列表了。首先,列表和变量相比最大的优势是可以对一系列的数据组进行修改和遍历,而不是逐一比较,效率提高了不少;其次,在python中的“列表”和以往scratch、c++里传统意义上的“链表”还是有很大的变革的!最大的不同,便是python用了“数组”(array),而其它的却用了“链表”(linked list)。
那么问题来了:数组和链表又有什么不同呢?数组是整个单一连续的内存区块,而链表通常是由一堆节点组成的,因而数组的各个部分“虽是整体,却为独立”,但链表的每一部分都与前后有着关联,就像串在一起的铜钱一样(有的是仅与后边相关联,而另外的是与前后都有关联,所以区分出“单向链表”和“双向链表”)。由于是一个整体,数组的工作效率大体上比链表的一步步查询高得多。
---------------------------------------------------------------------------------------------------------
那么接下来,小八就要介绍python列表的语法了。
列表使用方括号书写,里边每个数据都用逗号隔开:
>>>object=[data1,data2,data3...]
里面可以放入多种数据类型,包括列表本身:
列表可以跨行书写,比如下面的邻接列表:
,
]
(注:用花括号{}括出的是集合(set),以后小八会讲的^_^)
上面多是列表一些基本的结构,下面就要运用了!python的强大在于他为这些基本数据各自配备了同属的已经编写的“类”,可以让编程员方便继承。比如“sort”,可以给列表中的各项排序;“reserve”,倒序整个列表。还有很多很多,这就不一一列举了,但是你可以通过dir函数查询出所有的属性,并用len函数算出长度:
>>>len(dir([]))
>>>46 #------总共有46个------
经过了这一次的知识洗脑,小八就先介绍到这儿了,大家先消化消化,明天还要评讲试卷呢。下一期,小八会花大笔墨来讲解列表的运用!!
广告:可以去买一本《Python学习手册》,厚3.8厘米,非常详细地介绍了python的内置数据和函数,以及全面的语法和知识,可以快速提升干货的积累!