字典和递归
还记得在看微软的python入门视频的时候。我第一次接触字典这种东西。我觉得那是相当深奥的一件事,因为我搞不懂,那跟列表有什么区别,有什么牛逼的功能。之所以这样,大概是因为微软的视频里字典的录入他们用的是手动输入,显然我觉得一个一个对应太麻烦了。而且用起来的时候我也没发现有什么特别高的效率。入门终归是入门,你看不到字典的牛逼之处,当然就会对学习这东西没什么兴趣。当我在做Think Python 2习题,而且做得死去活来之后。当我用尽九牛二虎之力才终于用列表的方法以二分法搜索的方式找出某个词,而当我后来学习了字典,轻而易举就能找到某个词,效率差了一大截以后,我才明白到字典的超级牛逼之处。显然对我来说,现在我还不怎么熟悉字典这个东西。因为我只是用到了最基本的功能,还有非常多的东西我还不知道,一些它真正的用法我还没有使用到。比如现在的字典我只是停留在第一层级的程度上,通常的键和键值只是某个字符串。如果键值被换成一堆的列表呢?如果一堆列表里面还有一堆的元组呢?想想都觉得这相当恐怖,如果到达那个境界,我该用什么方法去访问那些东西呢?现在对我来说,那是个未解之谜,因为我还没遇到那种题目。
因为工作的原因,我已经放下python一两天了。这种东西一天不练就会手生,下次再重新开始的时候,大概我已经不记得某些语句该怎么写了,于是又得花一些时间去复习之前学过的东西。
还记得在接触python之前,我已经有听说有字典这种牛逼东西。在C语言里好像有,Excel VBA里好像也有,但是我都从来没有用过。因为我觉得那对我来说是非常遥远的存在。在python的学习过程中,我觉得字典就像吃饭睡觉一样,是基本的核心功能。字符串列表字典和元组就像数学里面的加减乘除。当然我这里列举了关系,并不是一一对应的,而是说明他们都是基本的功能,全部都得熟练运用。
还记得貌似是在学递归的那一章。在总结的时候,我记得那里好像说要我们学会不要在一个点上过分纠结,要有全局思维。其实递归并不需要把一个数值竟放进去,然后不断地按照程序进行不断的套用,应该从大局方面想,完成了这个操作,我应该得到什么答案,得到这个答案以后,我就可以把程序继续下去了。这说得简单,但实际上,有时我真想不到,递归最终我能得到什么答案,所以每次我都只能自己很傻地一遍一遍尝试。有些时候我图快,一下子放进去不是最基础的数字,结果就把我自己搞死了。后来才发现,原来一开始进去的东西就应该用最简单的,那才能最快地得出应该有的答案。直到现在,我还是非常难适应这种思维方式。在我没学习递归之前,我已经见识过了斐波那契数列。当时我是用循环的方法实现,但实际上更直观简单的方法是递归。还记得高中的数学里面也经常要我们把某些东西最终以某些方式表达出来,而当时他们给出的题目真是一些递归的东西。所以可能很早以前我就接触过递归了,但是当时没有学编程,也没有计算机,非常苦逼。
如果在学习的时候,能一边的学习编程一边学数学,大概当年就不会那么痛苦了。
还没有评论