匿名函數與內置函數

匿名函數

無名字的函數 用lambda :表示python

:左邊是參數,右邊是返回值函數

函數的調用時須要函數名+()由於匿名函數沒有名字,因此無法調用只能一次性使用code

匿名函數單獨使用沒有意義,須要配合內置函數一塊兒使用纔有意義對象

內置函數

python內部提供的內置方法,如:print(), len(), range(), max(), min(), sorted(), map(), filter()排序

  • max(可迭代對象) 求最大值字符串

    字符串比較的是ASCIIit

# 求列表l1中的最大值
l1 = [10, 2, 5, 1, 4]
print(max(l1))
# 求字典中薪資最高的人
dict1 = {
    'tank': 1000,
    'egon': 500,
    'sean': 200,
    'jason': 800
}
print(max(dict1, key=lambda x:dict1[x]))
>>>
tank
  • min(可迭代對象) 求最小值class

    字符串比較的是ASCIIimport

# 求字典中薪資最低的人
dict1 = {
    'tank': 1000,
    'egon': 500,
    'sean': 200,
    'jason': 800
}
print(min(dict1, key=lambda x:dict1[x]))
>>>
sean
  • sorted():默認升序(從小到大),reverse反轉,默認reverse=False
# 將字典中薪資排序
dict1 = {
    'tank': 1000,
    'egon': 500,
    'sean': 200,
    'jason': 800
}
# 升序
print(sorted(dict1, key=lambda x: dict1[x]))
# 降序
print(sorted(dict1, key=lambda x: dict1[x], reverse=True))
  • map() :映射匿名函數

    語法:map(函數地址,可迭代對象) ---->>獲得map對象

map會將可迭代對象中的值遍歷取出,而後按照指定的規則映射到一個map對象中

能夠將map對象轉換到列表或者元組中,只能轉一次

res = map(lambda x: x, range(5))
print(res) # 獲得map對象>>>><map object at 0x000001374A5C13C8>
print(list(res)) # 將map對象放到列表中>>>[0, 1, 2, 3, 4]
print(tuple(res)) # 只能轉一次>>>()
# 將list1中tank後綴加上"_生蠔",其餘元素中後綴加上"DS"
list1 = ['tank', 'jason', 'sean', 'egon']
res = map(lambda x: x+'生蠔' if x == 'tank' else x + 'DS', list1)
# res是map對象
print(tuple(res))
>>>
('tank生蠔', 'jasonDS', 'seanDS', 'egonDS')
  • reduce():合併

    須要從functools包中調用from functools import reduce

    語法:reduce(函數地址,可迭代對象,初始值默認爲None)

    將可迭代對象的值兩兩進行合併,並初始值能夠修改

from functools import reduce # 調用reduce模塊
# 求0-5的和
# 普通方法
num = 0
for i in range(5):
    num += i
print(num)
# reduce方法
res = reduce(lambda x, y: x+y, range(5)) # 初始值默認爲None
print(res) # 10
res = reduce(lambda x, y: x+y, range(5),100) # 初始值爲100
print(res) # 110
res = reduce(lambda x, y: x*y, range(1, 5)) # 初始值默認爲None
print(res) # 24
  • filter():過濾

    語法:filter(函數地址,可迭代對象) ----->>獲得filter對象

    將可迭代對象中的值遍歷取出,而後經過判斷,filter會將函數中返回的結果爲True 對應 的參數值 「過濾出來」,添加到filter對象中

    能夠將filter對象轉換到列表或者元組中,只能轉一次

# 將結尾是DS的名字過濾出來
t = ('tank生蠔', 'jasonDS', 'seanDS', 'egonDS')
res = filter(lambda x:x.endswith('DS'), t) # filter對象
print(res) # filter對象<filter object at 0x00000240FD29CA08>
print(list(res)) # 將filter對象轉到列表中['jasonDS', 'seanDS', 'egonDS']
相關文章
相關標籤/搜索