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