1. 程式人生 > >第十六天 Python學習

第十六天 Python學習

思考 重復 減少 存在 內存 合並 問題 不知道 必須

【今日學習】

一、匿名函數

匿名函數是相對於有名函數而言,有名函數的存在是為了可以重復在不同位置調用,匿名函數因為在定義時沒有名稱,只有內存地址,就像一個沒有名字的人一樣,他可以幹活,但你不知道他的名字時就不好叫他幹活,但只有一個人知道,那就是在定義時這個人可以使用一次。

匿名函數的使用:

匿名函數往往跟其它類型的函數一起使用,這裏包括max(取最大值)、min(取最小值)、reduce(合並)、sorted(排序)、filter(過濾)、map(映射)

註意:返回的值在Python3中返回的是對象

二、函數遞歸與二分法

1、遞歸本質就是一個循環的過程,
但是遞歸必須滿足兩個原則:
1. 每進入下一層遞歸,問題的規模必須有所減少
2. 遞歸必須有一個明確的結束條件或者說有一個明確的進入下一層遞歸的條件
並且遞歸有兩個明確的階段
1. 回溯: 一層一層地遞歸調用下去
2. 遞推: 再某一層結束掉遞歸,然後一層一層返回

2、 為何要用遞歸:
在某些情況下,基於遞歸來使用重復的過程比while循環更加簡單
# 遞歸舉例1:
# age(5)=age(4)+2
# age(4)=age(3)+2
# age(3)=age(2)+2
# age(2)=age(1)+2
# age(1)=18

# age(n)=age(n-1)+2 # n>1
# age(1)=18 # n=1
def age(n):
if n == 1:
return 18
return age(n-1)+2

res=age(5)
# return第一次返回的值是age(4)+2,第二次返回的值是(age(3)+2),res=(age(3)+2)+2.........
print(res)

# 函數遞歸舉例2:
# 取出列表中的值
list1=[1,[2,[3,[4,[5,[6,[7,[8,[9,10,11]]]]]]]]]


def func(l):
for i in l:
if type(i) is list:
func(i)
else:
print(i)


func(list1)
# 這裏列表是不斷在變化的,所以列表是變量

三、面向過程編程

核心是過程二字,過程指的是解決問題的步驟,即先幹什麽再幹什麽後幹什麽...
基於該思想編寫程序腦子裏應該始終思考過程二字,就好比在設計一條流水線,是一種
機械式的思維方式

優點:復雜的問題的流程化,進而簡單化
缺點:擴展性差

【知識點領悟】

1. 匿名函數是相對於有名函數而言,有名函數的存在是為了可以重復在不同位置調用,匿名函數因為在定義時沒有名稱,只有內存地址,就像一個沒有名字的人一樣,他可以幹活,但你不知道他的名字時就不好叫他幹活,但只有一個人知道,那就是在定義時這個人可以使用一次。

2.遞歸兩個原則:

第一、每進入下一層遞歸,問題的規模必須有所減少

      第二、遞歸必須有一個明確的結束條件或者說有一個明確的進入下一層遞歸的條件

註意:(在寫代碼時註意什麽是變化的量,這個變化的量必須在符合條件時會結束,但在調用的時候必須有一個明確的值)

第十六天 Python學習