《FIFA22》測試因洩露被EA終止 玩法和圖示已流出
阿新 • • 發佈:2021-06-25
一、匿名函式
匿名函式的定義
匿名函式就是沒有名字的函式,用於臨時使用一次的場景,用完該記憶體就會被回收,更多的是將它與其它函式配合使用
def foo(x,y): # foo為函式名 x,y為引數
return x+y # 函式體程式碼
lambda x,y:x+y. # 匿名函式沒有函式名直接寫作一行
# 也沒有return 直接返回該函式體程式碼的值
# 也可以將匿名函式賦值給變數名,賦值後變數名加括號就會觸發函式體程式碼的執行,但這樣就沒了匿名函式的意義
匿名函式的應用
info = [{'name': 'egon', 'sex': 'male', 'age': '18', 'salary': '3000'}, {'name': 'alex', 'sex': 'male', 'age': '38', 'salary': '30000'}, {'name': 'wupeiqi', 'sex': 'female', 'age': '28', 'salary': '20000'}, {'name': 'yuanhao', 'sex': 'female', 'age': '28', 'salary': '10000'}] # 1、取出薪資最高的人的資訊 # 那肯定用到max函式 但max對字典肯定是不能直接比較的 # 首先定義個函式 def func(info): return info[salary] # 返回需要對比的值,salary的值 # 但是這個函式我們只是臨時使用一次,那我們就可以將它變成匿名函式臨時使用一下==>lambda info: info['salary'] print(max(info,key=lambda info: info['salary'])) # key賦值是max的內建用法 # 輸出結果為 {'name': 'alex', 'sex': 'male', 'age': '38', 'salary': '30000'} print(max(i['salary'] for i in info)) # 取出工資 # 2、取出最年輕的人的資訊 print(min(info, key=lambda info: info['age'])) print(min(i['age'] for i in info)) # 取出最小年齡
map、filter 和 reduce
map() 會根據提供的函式對指定序列做對映
第一個引數 function 以引數序列中的每一個元素呼叫 function 函式,返回包含每次 function 函式返回值的新列表
# map()函式語法
map(function,iterable,...)
# function--函式 iterable--一個或多個序列
map() 應用
# python2返回的是列表 python3返回的是一個迭代器這時候需要list list(map(lambda x: x ** 2, [1, 2, 3, 4, 5])) # 計算列表各個元素的平方 # 輸出結果 [1, 4, 9, 16, 25] list(map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])) # 提供了兩個列表,對相同位置的列表資料進行相加 # 輸出結果 [3, 7, 11, 15, 19] names = ['lxx', "hxx", "wxx"] map(lambda name:name+"_vip",names) # 將names列表後面加上"_vip" 輸出為新列表
filter()函式用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表
該接收兩個引數,第一個為函式,第二個為序列,序列的每個元素作為引數傳遞給函式進行判斷,然後返回 True 或 False,最後將返回 True 的元素放到新列表中
# filter 函式語法
# python2返回的是列表 python3返回的是一個迭代器
filter(function,iterable)
# function--判斷函式 iterable--可迭代物件
filter()應用
# 過濾列表中所有的奇數 l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] def is_odd(n): # 判斷函式 return n % 2 == 1 # 變成匿名函式 lambda n:n % 2 == 1 list(filter(lambda n:n % 2 ==1,l)) # 輸出結果[1, 3, 5, 7, 9] # 過濾列表中以‘_vip’結尾的 names = ['lxx', "hxx_vip", "wxx_vip"] list(filter(lambda name:name.endswith('_vip'),names))
reduce()函式會對引數序列中元素進行累積
函式將一個數據集合(連結串列,元組等)中的所有資料進行下列操作:用傳給 reduce 中的函式 function(有兩個引數)先對集合中的第 1、2 個元素進行操作,得到的結果再與第三個資料用 function 函式運算,最後得到一個結果
# Python3.x reduce() 已經被移到 functools 模組裡,如果我們要使用,需要引入 functools 模組來呼叫 reduce() 函式
# 語法
from functools import reduce
reduce(function, iterable[, initializer])
# function -- 函式,有兩個引數
# iterable -- 可迭代物件
# initializer -- 可選,初始引數
reduce()應用
reduce(lambda x, y: x+y, [1,2,3,4,5]) # 計算列表和
# 輸出結果為 15
面向過程程式設計思想
面向過程的程式設計思想:核心是 “過程” 二字,過程即流程,指的是做事的步驟:先做什麼,再做什麼,後做什麼,基於該思想編寫程式就好比在設計一條流水線
優點:複雜的問題流程化、進而簡單化
缺點:擴充套件性非常差,牽一髮而動全身
面向過程的程式設計思想應用場景解析:
1、不是所有的軟體都需要頻繁更迭:比如編寫指令碼
2、即便是一個軟體需要頻繁更迭,也不併不代表這個軟體所有的組成部分都需要一起更迭