迭代遍历思维

普通人的思维

这不是胡诌,也不是乱扯,普通人的思维与工程师的思维是不一样的,如果你想掌握一门编程语言,就必须像工程师那样去思考,否则,你永远只能是一个门外汉。

lst = [3, 6, 7, 9, 2]

现在,请你用最快的速度说出列表里最大的数,你可以轻而易举的给出正确答案,是9,很好,请你回忆一下,你刚才是怎么找到这个答案的?

你几乎没有去想,你只是看了一眼,就给出了答案,一共只有5个整数,任何人,只要智商正常,只需要看一眼就知道9是这5个数中的最大值,这就是普通人的思维。

迭代遍历思维

现在让我们做一个思想实验,借此引出迭代遍历思维。刚才的列表里只有5个数字,实在太少了。在这个思想实验里,列表里的数据多达1亿个,你可以想象一下,1亿个数据,整个屏幕都装不下了,那么请你从这1亿个数据中找出最大的数值,你应该怎么办?

很显然,你不能再像之前那样一眼就看出答案,那种几乎无需思考的方法只能解决小数据量的问题,当问题的规模扩大到一定程度后,必须使用新的方法,这个方法就是迭代遍历。

准备一张纸,一支笔,一个橡皮擦,在纸上记录这1亿个数中的第一个,从现在开始,假设这个数就是最大的,接下来,将这1亿个数逐个与纸上的数值进行比较,如果比纸上记录的数值大,则修改纸上的数值,这个方法看起来比较笨,但却十分有效,它不会遗漏任何数值,当1亿个数都比较一遍后,这张纸上的数值就是这1亿个数中的最大值,这就是遍历。

这是我想到的方法,相信你经过一段时间的思考,也能想出类似的方法来,下面使用for循环来遍历列表,找出最大值。

lst = [3, 6, 7, 9, 2]

max_value = lst[0]
for item in lst:
    if item > max_value:
        max_value = item

print(max_value)

不论是for循环,还是while循环,其背后的思维模式都是迭代遍历,重复着去做一件简单的事情,我们不必担心速度,遍历1亿个整数对计算机来说不过是弹指一挥间的事情。

转变思维

当问题的规模很小时,我们很自然的采用普通人的思维,当问题的规模变的很大时,你也会很自然的切换到工程师的思维。

学习编程过程中,要求你主动的摒弃掉普通人的思维,完全的使用工程师的思维,哪怕这个列表里只有3个数据,也要使用for循环遍历数据找出最大值。

假如你对python的学习已经有些基础,你会提出使用max函数找出最大值,似乎与遍历无关,但需要知道,max的实现,仍然需要遍历整个列表。

扫描关注, 与我技术互动

QQ交流群: 211426309

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案