網(wǎng)站首頁 編程語言 正文
1. 引言
小伙伴們?nèi)粘9ぷ髦卸急夭豢缮俚厥褂肞ython實(shí)現(xiàn)一些簡單的功能,但是不同的人所編寫的代碼執(zhí)行效率往往是不同的。本文重點(diǎn)介紹大家經(jīng)常遇到的場景下,三個(gè)有效的,方便理解的,執(zhí)行高效的實(shí)用技巧。
閑話少說,我們直接開始吧!!!
2. 獲取字典的值
不妨假設(shè)我們有以下字典:
my_dict = {'first_name': 'Michaela', ? ? ? ? ? ?'last_name': 'Kraushaar', ? ? ? ? ? ?'age': 36, ? ? ? ? ? ?'job': 'Pfleger', ? ? ? ? ? ?'country': 'Antarktis'}
一般來說,我們可以直接使用方括號(hào)來從字典中獲取每個(gè)鍵所對應(yīng)的值,比如使用my_dict['country']
即可獲取country所對應(yīng)的值Antarktis
。但是,如果我們的鍵值在字典中不存在呢?我們往往會(huì)遇到以下錯(cuò)誤:
上圖中,我們嘗試獲取鍵city所對應(yīng)的值,此時(shí)由于city不存在,我們將會(huì)拋出KeyError
的異常,將終止我們代碼的執(zhí)行。
當(dāng)然,我們可以添加try-catch
語句來捕捉相應(yīng)的異常,但是我們可以有更好的選擇,那就是使用內(nèi)置函數(shù).get(),代碼如下:
可以看出,使用get()內(nèi)置函數(shù)執(zhí)行效率更高,同時(shí)如果鍵不存在時(shí),并不會(huì)觸發(fā)異常,而是會(huì)返回None,如下所示:
初次之外,內(nèi)置函數(shù)get()還可以傳入額外的輸出信息,如果鍵不存在時(shí),樣例如下:
建議:
盡量使用get()
函數(shù)來代替方括號(hào)來獲取字典中某個(gè)鍵的值
3. 循環(huán)中使用enumerate
通常,我們需要迭代循環(huán)一個(gè)范圍,比如list
、dictionary
,同時(shí)還需要處理每個(gè)元素所對應(yīng)的索引。
按照之前c/c++的經(jīng)驗(yàn),大多數(shù)人往往傾向于在循環(huán)中使用range
(len(iterable))來進(jìn)行遍歷,但是這里更推薦使用enumerate
(iterable),因?yàn)檫@種方式往往更加高效。
對比如下:
上述兩種實(shí)現(xiàn),雖然結(jié)果一樣,但是enumerate
(iterable)明顯更加方便易讀。除此之外,我們還可以自行決定,index下標(biāo)開始的數(shù)值,如下所示:
更進(jìn)一步地,使用函數(shù)enumerate
(iterable),可以方便地產(chǎn)生下標(biāo)和元素組合的元組,代碼如下:
建議:
盡量使用enumerate()函數(shù)來遍歷可迭代對象中的元素
4. 使用f-strings來拼接和打印字符串
格式化輸出可以使用函數(shù)format()。它允許使用簡單的占位符進(jìn)行格式化。
一般來說,f-strings
在需要格式化的字符串的開頭有一個(gè)字母f,同時(shí)在字符串中有多個(gè)占位符{}。
如下所示:
5. 總結(jié)
本文介紹了日常工作中常用的三個(gè)小技巧,這些小技巧都是工作中很小的細(xì)節(jié),但是使用它們可以讓我們編寫的代碼更加簡潔、方便修改和高效運(yùn)行。
原文鏈接:https://blog.csdn.net/sgzqc/article/details/123768298
相關(guān)推薦
- 2022-06-12 C語言詳解熱門考點(diǎn)結(jié)構(gòu)體內(nèi)存對齊_C 語言
- 2022-12-11 Dart多個(gè)future隊(duì)列完成加入順序關(guān)系及原子性論證_Dart
- 2022-09-08 go語言中的協(xié)程詳解_Golang
- 2022-09-15 golang?墻上時(shí)鐘與單調(diào)時(shí)鐘的實(shí)現(xiàn)_Golang
- 2022-08-19 Python截取字符串的簡單方法實(shí)例_python
- 2023-06-20 k8s應(yīng)用監(jiān)控探針詳解_云其它
- 2022-11-28 iOS中NSThread使用示例詳解_IOS
- 2022-04-20 C++的運(yùn)算符你真的了解嗎_C 語言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支