Python個人學習筆記(14):函數(匿名函數、內置函數(下)、三元表達式)

九、匿名函數

lambda表達式
語法規則:
變量 = lambda 參數1,參數2,…:返回值
例:用lambda簡化下述操作

def func(a,b):return a+b
ret = func(1, 2)
print(ret)

代碼:

fn = lambda a,b:a+b
print(fn)
print(fn(12,13))

結果:

<function <lambda> at 0x000001E751EAAF20>
25

可以幫我們一句話創建函數
可以與某些內置函數一起用

十、內置函數(下)

(一)zip:可以把多個可迭代內容進行合并

zip自動實現如下操作:
代碼:

lst1 = ["趙本山","范偉","蘇有朋"]
lst2 = [40,38,42]
lst3 = ["賣拐","耳朵大有福","情深深雨濛濛"]result = []
for i in range(len(lst1)):first = lst1[i]second = lst2[i]third = lst3[i]result.append((first,second,third))
print(result)

結果:

[('趙本山', 40, '賣拐'), ('范偉', 38, '耳朵大有福'), ('蘇有朋', 42, '情深深雨濛濛')]

代碼:

result = zip(lst1, lst2, lst3)
print(result)
print(dir(result)) # 查詢功能lst = list(result)
print(lst)

結果:

<zip object at 0x000001E1A9C563C0>
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__'] # 包含迭代器功能

既然是迭代器,那么就可以用for循環拿到元素
代碼:

for item in result:print(item)

結果:

('趙本山', 40, '賣拐')
('范偉', 38, '耳朵大有福')
('蘇有朋', 42, '情深深雨濛濛')

還可以放到一個列表中
代碼:

lst = list(result)
print(lst)

結果:

[('趙本山', 40, '賣拐'), ('范偉', 38, '耳朵大有福'), ('蘇有朋', 42, '情深深雨濛濛')]

(二)locals、globals(了解)

locals:查看當前位置所有的局部變量
如果locals寫在了全局作用域范圍內,此時看到的就是全局作用域中的內容。
代碼:

lst1 = ["趙本山","范偉","蘇有朋"]
lst2 = [40,38,42]
lst3 = ["賣拐","耳朵大有福","情深深雨濛濛"]
a = 188
print(locals())

結果:

'__cached__': None, 'lstat': <built-in function lstat>, 'lst1': ['趙本山', '范偉', '蘇有朋'], 'lst2': [40, 38, 42], 'lst3': ['賣拐', '耳朵大有福', '情深深雨濛濛'], 'a': 188}

如果locals放在局部作用域范圍,看到的就是局部作用域的內容
代碼:

def func():a=336print(locals())func()

結果:

{'a': 336}

globals:不管寫在哪,看到的都是全局作用域中的變量

(三)sorted:排序

1. 語法規則:

sorted(可迭代的, key=排序函數,reverse=True/False是否翻轉,否則為從小到大)

代碼:

lst = [16,22,34,68,1,213,324,49]
s = sorted(lst) # 從小到大
print(s)
s1 = sorted(lst,reverse=True) # 翻轉,從大到小
print(s1)

結果:

[1, 16, 22, 34, 49, 68, 213, 324]
[324, 213, 68, 49, 34, 22, 16, 1]

2. 對字符串排序

sorted把列表中的每一項傳遞給排序函數,然后排序函數返回相應的值,最后根據返回值進行排序
要求:以字符串長短排序
代碼:

lst = ["秋","張二嘎","比克","卡卡羅特","超級宇宙無敵大帥B"]def func(item): # item對應列表中的每一項數據return len(item)s = sorted(lst,key=func) # func后不要加(),否則變成調用函數了
print(s)

結果:

['秋', '比克', '張二嘎', '卡卡羅特', '超級宇宙無敵大帥B']

函數改成lanbda形式

lst = ["秋","張二嘎","比克","卡卡羅特","超級宇宙無敵大帥B"]
func = lambda x: len(x)
s = sorted(lst,key=func)
print(s)

由于排序函數在后文幾乎不會用到,所以可以進一步簡化

lst = ["秋","張二嘎","比克","卡卡羅特","超級宇宙無敵大帥B"]
s = sorted(lst,key=lambda x: len(x))
print(s)

一般情況下,lambda配合sorted使用

3. 對列表排序

lst = [{"id": 1, "name": "周潤發", "age": 18, "salary": 56000},{"id": 2, "name": "周星馳", "age": 28, "salary": 51100},{"id": 3, "name": "周海媚", "age": 78, "salary": 56123},{"id": 4, "name": "周伯通", "age": 12, "salary": 513414},{"id": 5, "name": "周大興", "age": 35, "salary": 563123},{"id": 6, "name": "周有辣", "age": 47, "salary": 561240},{"id": 7, "name": "周扒皮", "age": 8, "salary": 2310},
]

要求1:根據每個人的年齡排序
代碼:

s = sorted(lst, key=lambda d: d["age"])
print(s)

結果:

[{'id': 7, 'name': '周扒皮', 'age': 8, 'salary': 2310}, {'id': 4, 'name': '周伯通', 'age': 12, 'salary': 513414}, {'id': 1, 'name': '周潤發', 'age': 18, 'salary': 56000}, {'id': 2, 'name': '周星馳', 'age': 28, 'salary': 51100}, {'id': 5, 'name': '周大興', 'age': 35, 'salary': 563123}, {'id': 6, 'name': '周有辣', 'age': 47, 'salary': 561240}, {'id': 3, 'name': '周海媚', 'age': 78, 'salary': 56123}]

要求2. 根據工資從大到小排列
代碼:

s = sorted(lst, key=lambda d: d["salary"], reverse=True)
print(s)

結果:

[{'id': 5, 'name': '周大興', 'age': 35, 'salary': 563123}, {'id': 6, 'name': '周有辣', 'age': 47, 'salary': 561240}, {'id': 4, 'name': '周伯通', 'age': 12, 'salary': 513414}, {'id': 3, 'name': '周海媚', 'age': 78, 'salary': 56123}, {'id': 1, 'name': '周潤發', 'age': 18, 'salary': 56000}, {'id': 2, 'name': '周星馳', 'age': 28, 'salary': 51100}, {'id': 7, 'name': '周扒皮', 'age': 8, 'salary': 2310}]

(四)filter:篩選

自動提取需要的內容
語法規則:
filter(函數,可迭代對象)
列表元素依次當做參數傳遞給函數,函數判定之后再決定是否保留
filter是個生成器

lst = ["張無忌","張三豐","張翠山","滅絕小師太","小狐仙"]

要求1:提取姓張的人
代碼:

f = filter(lambda x: x.startswith("張"),lst)
print(list(f))

結果:

['張無忌', '張三豐', '張翠山']

要求2:不要姓張的人
代碼:

f = filter(lambda x: not x.startswith("張"),lst)
print(list(f))

結果:

['滅絕小師太', '小狐仙']

(五)map:映射

map(函數,可迭代對象)
列表中的每一個元素,經過函數計算之后得到的值,作為最終結果保留
map是一個生成器

lst = [1,2,3,4,5,6,7,8,9]

要求:對每一項計算平方
代碼:

r = map(lambda x: x * x, lst)
print(list(r))

結果:

[1, 4, 9, 16, 25, 36, 49, 64, 81]

也可以不用map實現

result = [item * item for item in lst]
print(result)

后續數據分析的內容中,有些時候是列表推導式解決不了的,只能用map

十一、三元表達式(了解)

各大語言都有三元表達式。
目的是把簡單的if判斷寫成一行。
語法:
結果1 if 條件 else 結果2
過程:
判斷條件是否為真,如果真,返回結果1,否則返回結果2
代碼:

a = 10
b = 20
c = a if a > b else b
print(c)

作用等同于:

if a > b:print(a)
else:print(b)

結果:

20

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/72094.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/72094.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/72094.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

dns劫持是什么?常見的劫持類型有哪些?如何預防?

DNS劫持的定義 DNS劫持&#xff08;Domain Name System Hijacking&#xff09;是一種網絡攻擊手段&#xff0c;攻擊者通過篡改域名解析的過程&#xff0c;將用戶對某個域名的訪問請求重定向到錯誤或惡意的IP地址。這種攻擊可能導致用戶訪問到釣魚網站、惡意廣告頁面&#xff0…

prompt大師高效提示詞解析

Prompt大師李繼剛高效提示詞示例解析 一、「漢語新解」提示詞 核心結構 采用Lisp語言框架嵌套中文語義&#xff0c;通過(defun 新漢語老師 ()...)定義角色風格&#xff08;融合奧斯卡王爾德、魯迅的批判性語言&#xff09;&#xff0c;用(隱喻 (一針見血...))構建解釋邏輯鏈。…

基于 Vue 的Deepseek流式加載對話Demo

目錄 引言組件概述核心組件與功能實現1. 消息顯示組件&#xff08;Message.vue&#xff09;2. 輸入組件&#xff08;Input.vue&#xff09;3. 流式請求處理&#xff08;useDeepseek.ts&#xff09;4. 語音處理模塊&#xff08;Voice.vue&#xff09; 總結Demo Github 地址 引言…

RK3588 編譯 openssl

在編譯 OpenSSL 時,你需要確保你的系統環境已經配置好了所有必要的依賴和編譯工具。下面是一般步驟和一些常見問題的解決方案,特別是在使用 RK3588 這類的 ARM 處理器上。 1. 安裝依賴 首先,你需要安裝編譯 OpenSSL 所需的依賴。這通常包括編譯器(如 GCC)、make 工具、Per…

常見JVM命令

1. java -XX:PrintCommandLineFlags HelloGC 作用&#xff1a;打印 JVM 啟動時的命令行參數&#xff0c;包括用戶顯式設置的參數和 JVM 自動默認設置的參數。用于確認 JVM 實際使用的配置。 2. java -Xmn10M -Xms40M -Xmx60M -XX:PrintCommandLineFlags -XX:PrintGC -XX:Prin…

easy-poi導出and導入一對多數據excel

easy-poi導出and導入一對多數據excel 一、導入jar包 <!-- easy-poi --><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><version>4.4.0</version></dependency> 二…

c#如何直接獲取json中的某個值

在 C# 中直接獲取 JSON 中的某個值,通常可以通過以下方法實現(以 Newtonsoft.Json 和 .NET 內置的 System.Text.Json 為例): 方法 1:使用 System.Text.Json(.NET 內置庫) using System.Text.Json;// 示例 JSON 字符串 string json = @"{""name"&qu…

WPS二次開發系列:Android 第三方應用如何獲取WPS端內文檔

1.需求場景 在項目開發中碰到這種情況&#xff0c;我們需要利用WPS的文檔管理能力&#xff0c;比如需要調用WPS的文件選擇器&#xff0c;來選擇文檔&#xff0c;同時需要得到WPS選擇的文檔結果返回給我們的應用。之前在網上找到了很久都沒有找到WPS移動端有相關的API接口文檔和…

Pytesseract識別圖片

1. Pytesseract識別圖片原理 1.1 Tesseract引擎工作原理 Tesseract OCR 引擎是一個功能強大的開源文字識別工具&#xff0c;其工作原理可以分為以下幾個關鍵步驟&#xff1a; 圖像預處理&#xff1a;Tesseract 首先對輸入的圖像進行預處理&#xff0c;包括灰度化、二值化、去…

Flutter 基礎組件 Text 詳解

目錄 1. 引言 2. 基本使用 3. 自定義樣式 4. 文本對齊與溢出控制 5. 外邊距 5.1 使用 Container 包裹 5.2 使用 Padding 組件 5.3 在 Row/Column 中使用 5.4 動態邊距調整 5.5 關鍵區別說明 5.6 設置 margin 無效 6. 結論 相關推薦 1. 引言 Text 組件是 Flutter 中…

Acknowledgment.nack方法重試消費kafka消息異常

文章目錄 問題示例異常 原因nack方法Acknowledgment接口實現類&#xff1a;ConsumerAcknowledgment實現類&#xff1a;ConsumerBatchAcknowledgment 解決方案1 批量消費指定index示例 2 單條消費示例 問題 使用BatchAcknowledgingMessageListener 批量消費Kafka消息&#xff0…

Java 反序列化 - commons collection 之困(一)

#01多余的碎碎念 說到 java 反序列化&#xff0c;去搜索的話能看到網上有很多分析關于 commons collection 利用鏈的文章&#xff0c;emm 我一開始看不懂&#xff0c;看到很多代碼的圖頭暈。 這篇文章的話其實是我跟著 p 神的文章一路走下來的&#xff0c;所以整個邏輯會按照…

python LLM工具包

阿里云鏡像pypi http://mirrors.aliyun.com/pypi/simple/ modelscope魔塔 pip install modelscope https://modelscope.cn/docs/models/download Sentence-transformers pip install -U sentence-transformers pip3 install torch -i https://pypi.tuna.tsinghua.edu.cn/sim…

Linux賬號和權限管理

用戶賬戶管理 理論 /etc/passwd 該目錄用于保存用戶名&#xff0c;宿主目錄&#xff0c;登錄shel等基本信息 /etc/shadow 該目錄用于保存 用戶密碼&#xff0c;賬戶有效期等信息 圖上每一行中都有用“&#xff1a;”隔斷的字段 字段含義&#xff1a; 第1字段:用戶賬號的名…

晉升系列4:學習方法

每一個成功的人&#xff0c;都是從底層開始打怪&#xff0c;不斷的總結經驗&#xff0c;一步一步打上來的。在這個過程中需要堅持、總結方法論。 對一件事情長久堅持的人其實比較少&#xff0c;在堅持的人中&#xff0c;不斷的總結優化的更少&#xff0c;所以最終達到高級別的…

win32匯編環境,對話框中使用樹形視圖示例四

;運行效果,當點擊張遼時,展示張遼的圖像 ;當點擊曹仁時,展示曹仁的圖像 ;win32匯編環境,對話框中使用樹形視圖示例四 ;當點擊樹形視圖treeview控件中的某項時,展示某些功能。這里展示的是當點到某個將領時,顯示某個將領的圖像 ;直接抄進RadAsm可編譯運行。重要部分加備注。…

智慧停車小程序:實時車位查詢、導航與費用結算一體化

智慧停車小程序:實時車位查詢、導航與費用結算一體化 一、城市停車困境的數字化突圍 中國機動車保有量突破4.3億輛,但車位供給缺口達8000萬。傳統停車管理模式存在三大致命傷: 盲盒式尋位:62%的車主遭遇"地圖顯示有位,到場已滿員"的窘境迷宮式導航:商場停車場…

Windows server網絡安全

摘要 安全策略 IP安全策略&#xff0c;簡單的來說就是可以通過做相應的策略來達到放行、阻止相關的端口&#xff1b;放行、阻止相關的IP&#xff0c;如何做安全策略&#xff0c;小編為大家詳細的寫了相關的步驟&#xff1a; 解說步驟&#xff1a; 阻止所有&#xff1a; 打…

充電樁快速搭建springcloud(微服務)+前后端分離(vue),客戶端實現微信小程序+ios+app使用uniapp(一處編寫,處處編譯)

充電樁管理系統是專為中小型充電樁運營商、企業和個人開發者設計的一套高效、靈活的管理平臺。系統基于Spring Cloud微服務架構開發&#xff0c;采用模塊化設計&#xff0c;支持單機部署與集群部署&#xff0c;能夠根據業務需求動態擴展。系統前端使用uniapp框架&#xff0c;可…

小肥柴慢慢手寫數據結構(C篇)(4-3 關于棧和隊列的討論)

小肥柴慢慢學習數據結構筆記&#xff08;C篇&#xff09;&#xff08;4-3 關于棧和隊列的討論&#xff09; 目錄1 雙端棧/隊列2 棧與隊列的相互轉化2-1 棧轉化成隊列2-2 隊列轉化成棧 3 經典工程案例3-1 生產者和消費者模型&#xff08;再次重溫環形緩沖區&#xff09;3-2 MapR…