網站首頁 編程語言 正文
1、引言
小屌絲:魚哥, 都說要想代碼寫的溜,Lamdba不能少。
小魚:你在項目代碼多寫幾個lamdba試試,看看架構師找不找你喝茶水。
小屌絲:…
小魚:逗你玩… 架構師哪舍得自己花錢買茶葉,都是能蹭就蹭…
小屌絲:…
小魚:你這突然提到lamdba函數,是想了解點什么??
小屌絲:嘿嘿,真是什么都瞞不過你, 我就想把python最常用的內置函數在重新捋一捋,
小魚:說實話。
小屌絲:你也知道,我女神最近在學習python,所以我想…
小魚:靠… 就知道你是這樣的!
小屌絲:魚哥,我也是身不由己啊, 不然… 說出來都是眼淚。
小魚:行了,別裝的這么可憐, 我給你捋一捋不就行了。
小屌絲:啥也別說了,此時我想…
2、內置函數詳解
2.1 Lamdba 函數
lambda 函數用于創建匿名函數,又被稱為lambda表達式。
實際上它只是一個表達式的存在,如果在代碼編寫過程中需要實現簡單的函數邏輯但是單獨寫一個函數又比較麻煩就可以使用lambda表達式只需要一行代碼就可以完成了。
比如需要實現一個簡單的加法計算,使用基本的函數來實現需要創建一個add_1函數。
示例:
實現一個簡單的加法計算。
一、基本函數
代碼示例
# -*- coding:utf-8 -*-
# @Time : 2022-08-24
# @Author : Carl_DJ
#基本函數來實現加法計算
def add_ms(x,y):
return x + y
print(f'輸出結果:{add_ms(8,9)}')
運行結果
輸出結果:17
二、lamdba表達式
使用lamdba表達式來實現
代碼示例
# -*- coding:utf-8 -*-
# @Time : 2022-08-24
# @Author : Carl_DJ
#lamdba表達式來實現
add_lamd = lambda x,y:x+y
print(f'lamdba表達式輸出結果:{add_lamd(5,10)}')
運行結果
lamdba表達式輸出結果:15
解析:
lambda x,y: x + y 表示 x,y是作為參數,x + y是作為函數的運算邏輯被執行。
2.2 Map 函數
map函數可以使用另外一個函數轉換整個可迭代對象的函數,包括將字符串轉換為數字、數字的四舍五入等等。
之所以使用map函數來完成這些事情可以節約內存,使代碼的運行速度提高,并且使用的代碼量比較少。
2.2.1 數字轉換
示例:
將一個字符串的數組轉換成數字的數組的形式,這里用兩種方式:
- 傳統的for循環方式
- map函數
接下來,我們用代碼轉換。
一、傳統for循環方式
代碼示例
# -*- coding:utf-8 -*-
# @Time : 2022-08-24
# @Author : Carl_DJ
#for 循環來讀取res列表的值
strings = ['10','20','30','40','50']
res = []
for str in strings:
res.append(int(str))
print(f'輸出結果:{res}')
運行結果
輸出結果:[10, 20, 30, 40, 50]
二、map函數
我們使用map函數方式來轉換。
代碼示例
# -*- coding:utf-8 -*-
# @Time : 2022-08-24
# @Author : Carl_DJ
#調用map函數
strings = ['11','22','33','44','55']
res_map = map(int,strings)
print(f'map函數輸出結果:{list(res_map)}')
運行結果
map函數輸出結果:[11, 22, 33, 44, 55]
可以看到,map函數,一行代碼就可以轉換完成,非常方便。
2.2.2 字母大小寫轉換
解析:
map(int,strings),其中int是作為函數作為參數傳入的,而strings就是可以迭代的對象。
示例
把小寫英文字母轉換成大寫英文字母
代碼示例
# -*- coding:utf-8 -*-
# @Time : 2022-08-24
# @Author : Carl_DJ
'''
代碼實現功能:
創建函數,來轉換可轉化的序列數據
初始化make_super函數,將小寫英文轉換成大寫英文
'''
#定義make_super函數,
def make_super(text):
res_text = text.upper()
return res_text
#定義英文單詞列表
words = ['python', 'java', 'ruby','go']
#轉化
words_res = list(map(make_super, words))
print(f'轉換結果:{words_res}')
運行結果
轉換結果:['PYTHON', 'JAVA', 'RUBY', 'GO']
使用map(make_super, words),其中make_super是作為函數傳入的,而words作為可序列化數據。
2.3 Filter 函數
定義
filter函數:使用該函數可以有效的過濾掉不需要的列表中的數據元素。
方法
'''
filter(function, iterable)
'''
在邏輯處理中,同樣是需要一個處理函數和一個可序列化的數據。
# -*- coding:utf-8 -*-
# @Time : 2022-08-24
# @Author : Carl_DJ
#定義列表
list_num = [11,22,33,44,55,66,77]
#過濾掉偶數,保留奇數
new_list = filter(lambda n:n % 2 == 1,list_num)
print(f'過濾后的結果:{list(new_list)}')
運行結果
過濾后的結果:[11, 33, 55, 77]
通過運行結果,可以看到過濾掉了所有的偶數元素,留下了奇數元素。
2.4 Reduce 函數
定義
reduce函數通常用于計算整個列表的邏輯運算,即將一個函數的運算可以添加到這個列表的每個元素上面。
方法
'''
reduce(function, iterable[, initializer])
'''
代碼示例
計算一個列表中每個元素之間的相乘的結果:
# -*- coding:utf-8 -*-
# @Time : 2022-08-24
# @Author : Carl_DJ
from functools import reduce
#列表
list_re = [10,20,30,40,50,]
#計算每個元素的乘積
print(f'計算結果:{reduce(lambda x, y: x * y, list_re)}')
運行結果
計算結果:12000000
2.5 Enumerate 函數
定義
enumerate 函數:一般用于可序列化數據的處理上面,而python中的可序列化數據又比較多,所以,還是蠻重要的。
代碼示例
可以使用該函數直接遍歷出一個可序列化數據的下標索引以及對應的數據。
# -*- coding:utf-8 -*-
# @Time : 2022-08-24
# @Author : Carl_DJ
#定義列表內容
words = ['python', 'java', 'ruby','go']
#遍歷執行,返回新的列表
for index, data in enumerate(words):
print(f'當前索引:{index},當前數據:{data}')
運行結果
當前索引:0,當前數據:python
當前索引:1,當前數據:java
當前索引:2,當前數據:ruby
當前索引:3,當前數據:go
2.6 Zip 函數
定義
zip函數:可以同時遍歷多個列表并將相同位置的元素組合成一個元祖。
代碼示例
#定義空列表
list_res = []
#遍歷列表使其相同位置元素能組合成
for m in zip([1, 2, 3, 4, 5], ['python', 'java', 'ruby', 'go', 'C#']):
list_res.append(m)
print(f'輸出結果:{list_res}')
運行結果
輸出結果:[(1, 'python'), (2, 'java'), (3, 'ruby'), (4, 'go'), (5, 'C#')]
3、總結
看到這里,今天的分享差不多就完事了。
今天共分享了六種常用的內置函數:
- Lamdba 函數
- Map 函數
- Filter 函數
- Reduce 函數
- Enumerate 函數
- Zip 函數
在實際的工作中,這些都是非常實實在在常用的函數,
所以,這些也都是必須要掌握的知識。
原文鏈接:https://blog.csdn.net/wuyoudeyuer/article/details/126517517
相關推薦
- 2022-06-07 Python?Numpy庫的超詳細教程_python
- 2022-09-17 docker資源控制管理Cgroup的實現_docker
- 2022-03-18 linux下修改文件權限chmod命令詳細解析_Linux
- 2022-04-22 golang數據類型【字符類型】以及fmt的輸出輸入、UTF-8 和 Unicode 有何區別?
- 2022-04-17 Specified key was too long; max key length is 767
- 2022-04-26 EF?Core通過顯式編譯提高查詢性能_實用技巧
- 2023-04-19 Android開發服務Service全面講解_Android
- 2022-07-10 理解setuid()、setgid()和sticky位
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支