第10节,遍历的思维

1. 初学阶段不要过多依赖内置函数

已知有一个列表

lst = [4, 2, 1, 6]

请输出列表里的最大值,很多教程都告诉你使用内置函数max

max_value = max(lst)
print(max_value)  # 6

max函数的确可以获取一个列表里的最大值,类似max的函数还有很多,python的内置函数提供了非常丰富的功能,因此,即便是一个非计算机科班出身的人也可以很快利用python实现一些功能。

但是,如果初学者一开始就依赖这些内置函数,是不利于编程思维的养成的。因为内置函数直接给了你一个结果,而你对中间的过程一无所知,你强调拿来主义并非全无是处,但我必须指出,内置函数不能帮你实现所有的功能。当你需要自己实现一些功能时,由于缺乏基础的,简单的逻辑练习,那个时候就会变得非常困难。

2. 遍历思维

lst = [4, 2, 1, 6]

告诉我,列表里的最大值是多少。你可以不假思索的回答最大值是6,这就是我们人类的思维模式,你几乎是瞬间完成了思考,而对于你思考的过程,你几乎感受不到。

如果是程序来做这件事情呢?程序必须依照自己的模式来思考,这种模式就是遍历。

lst = [4, 2, 1, 6]

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

print(max_value)

程序不能像人一样,一眼就看出最大值是多少,程序必须遍历整个列表,逐个进行比较。

让max_value = lst[0], 遍历过程中,逐个元素与max_value比较,如果item比max_value大,就更改max_value的值,让max_value等于更大的值,这个过程就如同一群人在争抢宝座,先让lst[0] 坐在max_value的宝座上,列表里的元素逐个与它比较,谁更高,谁就可以把之前的元素撵走,坐在宝座上。整个列表遍历结束后,坐在max_value上的元素就是列表的最大值。

遍历思维是一种非常简单的思维,一言不合就遍历,其实,当问题的规模足够大时,我们和程序一样,也会采取遍历的思维。假设列表里的元素有1亿个,你还能一眼就看出来哪个最大么?显然不能。这个时候,你就必须像程序那样,对这1亿个数进行遍历,在遍历完所有数据之前,你都不可能找出最大值。

计算机是人类智力的延伸,它的优势在于快,给他一个简单的逻辑,它可以1秒钟执行几万次,这就是循环的力量。

3. 寻找列表里第二大的数

正如前面所讲,内置函数不能帮你实现所有的功能,比如寻找列表中第二大的数。如果是你,你会怎么做呢?

依然是遍历,这一次,有两个宝座,一个宝座坐最大值,另一个宝座坐第二大的值,遍历列表,逐个与这两个宝座上的元素进行比较

lst = [4, 2, 1, 6]

max_value = lst[0]
second_value = lst[0]

for item in lst:
    if item >= max_value:
        second_value = max_value
        max_value = item
    else:
        if item > second_value:
            second_value = item

print(second_value)

在遍历时,我们必须借助一些额外的变量,来存储遍历过程中的中间结果,不论是max_value还是second_value, 在遍历过程中,他们的值都是中间结果,直到遍历结束,他们的值才是最终结果,是我们想要的结果。

扫描关注, 与我技术互动

QQ交流群: 211426309

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

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