1.匿名函式
# 1.匿名函式lambda # 簡化代碼 減少占用的記憶體 print('1.匿名函式lambda') def func(): print(10) func() func = lambda: print(10) # 出現警告的原因是: # 因為你把lambda運算式賦給了另一個變數, # 但lambda運算式本就是一個匿名的函式, # PEP8規范并不推薦將lambda運算式賦值給一個變數, # 再通過變數呼叫函式這種方式, # 這種方式不能體現lambda運算式的特色, # 基本只是復制def的功能, # 同時這個變數名其實也不是lambda運算式真正的函式名, # 還顯得比def方式更容易混淆, # 事實上lambda運算式的正確用法應該是在不分配變數的情況下使用 # lambda 形參: print(10) # 有一個回傳值,并且只有一句代碼 # 引數部分可有可無 def func0(a, b): return a+b print(func0(1, 2)) func00 = lambda a, b: a + b print(func00(1, 2)) # 排序 list1 = [[3, '1'], [1, '3'], [2, '2']] # for i in list1: # print(i[0]) # 輸出前面的數字 list1.sort(key=lambda i: i[0]) # 根據list1每個元素中的第一個元素從小到大排序 print(list1) list1 = [[3, '1'], [1, '3'], [2, '2']] # for i in list1: # print(i[1]) # 輸出后面的字串 list1.sort(key=lambda i: i[1]) # 根據list1每個元素中的第二個元素從小到大排序 print(list1) list1 = [[3, '1:3'], [1, '3:2'], [2, '2:1']] # for i in list1: # print(i[1][-1]) # 輸出字串的最后一個字符 list1.sort(key=lambda i: i[1][-1]) # 根據list1每個元素中的第二個元素的-1索引位置的資料從小到大排序 print(list1)

2.高階函式map
# 2.高階函式map(func,list) # 映射出一個新的資料 print() print('2. map()') list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] map(lambda i: str(i), list1) # 將list1中的每個資料轉換成str型別 # print(map(lambda i: str(i), list1)) # 列印出的是迭代器,而不是期望輸出的資料 # for i in list1: # print(str(i)) print(list(map(lambda i: str(i), list1))) # for i in list1: # print(i+1) list2 = list(map(lambda i: i + 1, list1)) # list1中的每個資料+1 print(list2)

3.高階函式reduce()
# 3.高階函式reduce(func,list) # 累計 # 需要匯入模塊 from functools import reduce # 只匯入了這一個函式 print() print('3. reduce()') list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] print(reduce(lambda a, b: a + b, list1)) # 求和 和sum()作用相同 print(reduce(lambda a, b: a * b, list1)) # 求積

4.高階函式filter
# 4.高階函式filter(func,list) 篩選 # 過濾函式 # 過濾不符合的運算式 # 過濾走不符合條件的資料,保留合乎條件的資料 print() print('4. filter()') list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] # for i in range: # if i%2 !=0: print(list(filter(lambda i: i % 2 == 0, list1))) # 選出偶數

5.遞回
# 5.遞回 套娃 # 遞回特點: # 1,函式內部自己呼叫自己 # 2,必須要有介面 print() print('5.遞回') def func1(data): if data =https://www.cnblogs.com/qc2012/archive/2022/11/26/= 1: return 1 return data + func1(data - 1) print(func1(3)) # 3+2+1 print()
# 將串列中的每個資料輸出 def func2(list0): if type(list0) == list: # 判斷是否是串列 for i in list0: func2(i) else: print(list0) list1 = [1, 2, [3, [4, 5], [6, 7, 8]], [9, 0]] func2(list1)

# 今日作業 """ 用遞回求5的階乘(5*4*3*2*1) """ print() print('今日作業') def func3(data: int) -> int: """ 階乘函式 :param data: :return: """ if data =https://www.cnblogs.com/qc2012/archive/2022/11/26/= 1: # 判斷輸入的資料是否為1 return 1 return data * func3(data - 1) print(func3(5))

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/538449.html
標籤:其他
上一篇:matplotlib詳細教學
