日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

len() 函數(shù)妙用:十個(gè)增強(qiáng) Python 程序可讀性的實(shí)踐

來源: 責(zé)編: 時(shí)間:2024-07-03 17:26:01 1117觀看
導(dǎo)讀今天我們要來聊聊一個(gè)看似簡(jiǎn)單卻深藏不露的函數(shù)——len()。別看它平時(shí)低調(diào),只需一招就能告訴你列表有多長(zhǎng)、字符串有幾個(gè)字符,但它背后的妙用可多著呢!讓我們一起探索這10+個(gè)小技巧,讓你的Python代碼不僅高效,而且讀起來就

今天我們要來聊聊一個(gè)看似簡(jiǎn)單卻深藏不露的函數(shù)——len()。別看它平時(shí)低調(diào),只需一招就能告訴你列表有多長(zhǎng)、字符串有幾個(gè)字符,但它背后的妙用可多著呢!讓我們一起探索這10+個(gè)小技巧,讓你的Python代碼不僅高效,而且讀起來就像故事一樣有趣!Sa628資訊網(wǎng)——每日最新資訊28at.com

Sa628資訊網(wǎng)——每日最新資訊28at.com

1. 列表長(zhǎng)度,一眼看穿

當(dāng)你有一個(gè)長(zhǎng)長(zhǎng)的列表,想知道里面裝了多少寶貝,直接上len()吧!Sa628資訊網(wǎng)——每日最新資訊28at.com

my_list = [1, 2, "apple", True]print("我的列表有", len(my_list), "個(gè)元素。")

這行代碼就像魔法,瞬間告訴你列表的大小,簡(jiǎn)單粗暴有效。Sa628資訊網(wǎng)——每日最新資訊28at.com

2. 字符串的字符計(jì)數(shù)

處理文本時(shí),想知道字符串的長(zhǎng)度?len()來幫忙!Sa628資訊網(wǎng)——每日最新資訊28at.com

message = "Hello, World!"print("這條消息有", len(message), "個(gè)字符。")

在這里,len()把空格和標(biāo)點(diǎn)也算進(jìn)去了哦,它對(duì)字符一視同仁。Sa628資訊網(wǎng)——每日最新資訊28at.com

3. 隱形數(shù)組的秘密

知道數(shù)組里有多少層?用len()層層遞進(jìn)。Sa628資訊網(wǎng)——每日最新資訊28at.com

nested_list = [[1, 2], [3, 4, 5], [6]]print("最外層有", len(nested_list), "個(gè)子列表。")

想深入了解子列表的結(jié)構(gòu)?嵌套使用len(),一層一層剝開它的心。Sa628資訊網(wǎng)——每日最新資訊28at.com

4. 字典鍵的數(shù)量,輕松數(shù)

字典里有多少個(gè)鍵?別忘了我們的英雄len()。Sa628資訊網(wǎng)——每日最新資訊28at.com

my_dict = {"name": "Alice", "age": 25, "city": "Wonderland"}print("我的字典包含了", len(my_dict), "個(gè)鍵值對(duì)。")

它只數(shù)鍵,不數(shù)值,是的,就是這么專一。Sa628資訊網(wǎng)——每日最新資訊28at.com

5. 判斷空容器,一目了然

要檢查一個(gè)容器(如列表、字典)是否為空,len()+條件判斷,簡(jiǎn)潔明了。Sa628資訊網(wǎng)——每日最新資訊28at.com

empty_list = []if len(empty_list) == 0:    print("列表是空的,寂寞如雪。")

這招特別適合寫邏輯判斷,一眼看出真假。Sa628資訊網(wǎng)——每日最新資訊28at.com

6. 等分列表,均勻分配

想要將列表平均分成幾份?先用len()算出總數(shù),再按需分割。Sa628資訊網(wǎng)——每日最新資訊28at.com

my_numbers = list(range(1, 11))chunk_size = 3for i in range(0, len(my_numbers), chunk_size):    print(my_numbers[i:i + chunk_size])

這段代碼就像切蛋糕,均勻分配,每份都是chunk_size那么大。Sa628資訊網(wǎng)——每日最新資訊28at.com

7. 循環(huán)控制的智慧

在循環(huán)中,用len()控制迭代次數(shù),避免越界風(fēng)險(xiǎn)。Sa628資訊網(wǎng)——每日最新資訊28at.com

fruits = ["apple", "banana", "cherry"]for i in range(len(fruits)):    print(fruits[i].upper())

這樣可以確保安全地遍歷整個(gè)列表,每個(gè)水果都不錯(cuò)過,還加了個(gè)大寫的特效。Sa628資訊網(wǎng)——每日最新資訊28at.com

8. 生成序列的長(zhǎng)度預(yù)知

創(chuàng)建序列時(shí),比如生成一系列數(shù)字,提前知道長(zhǎng)度能做更多計(jì)劃。Sa628資訊網(wǎng)——每日最新資訊28at.com

sequence_length = 10sequence = [i for i in range(sequence_length)]print("我生成的序列有", len(sequence), "個(gè)數(shù)字。")

在生成之前就掌握了規(guī)模,是不是有種運(yùn)籌帷幄的感覺?Sa628資訊網(wǎng)——每日最新資訊28at.com

9. 動(dòng)態(tài)調(diào)整數(shù)組大小的依據(jù)

動(dòng)態(tài)數(shù)組操作時(shí),根據(jù)當(dāng)前長(zhǎng)度決定是否添加或刪除元素。Sa628資訊網(wǎng)——每日最新資訊28at.com

stack = [1, 2, 3]while len(stack) > 0:    print(stack.pop(), "被拿走了。")

這個(gè)例子展示了如何利用len()監(jiān)控棧的大小,直到它變空。Sa628資訊網(wǎng)——每日最新資訊28at.com

10. 優(yōu)化代碼可讀性的小秘密

最后,記得len()可以讓代碼更易讀。比如,相比直接比較,下面哪種更直觀?Sa628資訊網(wǎng)——每日最新資訊28at.com

# 不太直觀的寫法if my_list[10]:     # 假設(shè)這里是為了避免索引錯(cuò)誤    pass# 更清晰的寫法if len(my_list) > 10:    # 明確表達(dá)了意圖    pass

通過直接檢查長(zhǎng)度,代碼意圖一目了然,減少了誤解的空間。Sa628資訊網(wǎng)——每日最新資訊28at.com

進(jìn)階與高級(jí)用法

11. 利用len()進(jìn)行條件判斷的高級(jí)玩法

在復(fù)雜的邏輯判斷中,len()可以與Python的布爾運(yùn)算結(jié)合,簡(jiǎn)化代碼。比如,檢查列表是否包含特定數(shù)量的元素。Sa628資訊網(wǎng)——每日最新資訊28at.com

my_items = [1, 2, 3, 4, 5]# 如果列表恰好有3個(gè)或5個(gè)元素if len(my_items) in [3, 5]:    print("列表長(zhǎng)度符合要求!")

這種方式比使用多個(gè)if-elif語句更為簡(jiǎn)潔。Sa628資訊網(wǎng)——每日最新資訊28at.com

12. len()與生成器表達(dá)式的結(jié)合

生成器在處理大數(shù)據(jù)時(shí)非常有用,但它們的長(zhǎng)度計(jì)算可能不是即時(shí)的。盡管如此,len()依然適用,但需要注意性能影響。Sa628資訊網(wǎng)——每日最新資訊28at.com

large_data = (x for x in range(1, 1000000))# 注意:對(duì)于大型生成器,計(jì)算長(zhǎng)度可能會(huì)消耗資源print("生成器的大致長(zhǎng)度是", len(list(large_data)))  # 注意轉(zhuǎn)換為列表

這里提醒大家,對(duì)于非常大的數(shù)據(jù)集,直接計(jì)算長(zhǎng)度可能不是最優(yōu)選擇。Sa628資訊網(wǎng)——每日最新資訊28at.com

13. 在類定義中的應(yīng)用

自定義對(duì)象時(shí),可以通過重寫__len__方法,使len()適用于你的對(duì)象。Sa628資訊網(wǎng)——每日最新資訊28at.com

class MyCollection:    def __init__(self, items):        self.items = items        def __len__(self):        return len(self.items)my_collection = MyCollection([1, 2, 3])print("自定義集合有", len(my_collection), "個(gè)元素。")

通過這種方式,len()函數(shù)能夠適用于你創(chuàng)建的任何集合類,增強(qiáng)了代碼的通用性和一致性。Sa628資訊網(wǎng)——每日最新資訊28at.com

14. 與迭代器的巧妙結(jié)合

迭代器沒有直接的長(zhǎng)度屬性,但我們可以間接利用len()通過轉(zhuǎn)換成列表或集合來獲取長(zhǎng)度,盡管這不是最佳實(shí)踐。Sa628資訊網(wǎng)——每日最新資訊28at.com

iterator = iter([1, 2, 3, 4])# 不推薦,特別是對(duì)于大型迭代器print("轉(zhuǎn)換后的長(zhǎng)度是", len(list(iterator)))

再次強(qiáng)調(diào),對(duì)于大量數(shù)據(jù),直接轉(zhuǎn)換成列表來求長(zhǎng)度會(huì)消耗大量?jī)?nèi)存。Sa628資訊網(wǎng)——每日最新資訊28at.com

15. 創(chuàng)意編碼挑戰(zhàn):動(dòng)態(tài)字符串長(zhǎng)度調(diào)整

最后,來個(gè)小挑戰(zhàn),用len()來實(shí)現(xiàn)一個(gè)功能,比如根據(jù)字符串長(zhǎng)度動(dòng)態(tài)添加星號(hào)作為前綴,以達(dá)到特定長(zhǎng)度。Sa628資訊網(wǎng)——每日最新資訊28at.com

def pad_with_stars(target_length, text):    current_length = len(text)    padding_needed = target_length - current_length    if padding_needed > 0:        padded_text = "*" * padding_needed + text        return padded_text    else:        return textprint(pad_with_stars(10, "Hello"))

這個(gè)小函數(shù)展示了如何根據(jù)目標(biāo)長(zhǎng)度動(dòng)態(tài)調(diào)整字符串,既實(shí)用又展示了len()在字符串操作中的靈活性。Sa628資訊網(wǎng)——每日最新資訊28at.com

通過這些額外的技巧和思考,我們不僅深化了對(duì)len()函數(shù)的理解,還學(xué)會(huì)了如何將其融入更復(fù)雜的編程實(shí)踐中,提高代碼的靈活性和可讀性。Sa628資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-98560-0.htmllen() 函數(shù)妙用:十個(gè)增強(qiáng) Python 程序可讀性的實(shí)踐

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 一分鐘了解,預(yù)寫日志 WAL 的核心思路...

下一篇: Vue入門指南:從基礎(chǔ)到實(shí)踐

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 鴻蒙OS 4.0公測(cè)機(jī)型公布:甚至連nova6都支持

    華為全新的HarmonyOS 4.0操作系統(tǒng)將于今天下午正式登場(chǎng),官方在發(fā)布會(huì)之前也已經(jīng)正式給出了可升級(jí)的機(jī)型產(chǎn)品,這意味著這些機(jī)型會(huì)率先支持升級(jí)享用。這次的HarmonyOS 4.0支持
  • 在線圖片編輯器,支持PSD解析、AI摳圖等

    自從我上次分享一個(gè)人開發(fā)仿造稿定設(shè)計(jì)的圖片編輯器到現(xiàn)在,不知不覺已過去一年時(shí)間了,期間我經(jīng)歷了裁員失業(yè)、面試找工作碰壁,寒冬下一直沒有很好地履行計(jì)劃.....這些就放在日
  • WebRTC.Net庫開發(fā)進(jìn)階,教你實(shí)現(xiàn)屏幕共享和多路復(fù)用!

    WebRTC.Net庫:讓你的應(yīng)用更親民友好,實(shí)現(xiàn)視頻通話無痛接入! 除了基本用法外,還有一些進(jìn)階用法可以更好地利用該庫。自定義 STUN/TURN 服務(wù)器配置WebRTC.Net 默認(rèn)使用 Google 的
  • 梁柱接棒兩年,騰訊音樂闖出新路子

    文丨田靜 出品丨牛刀財(cái)經(jīng)(niudaocaijing)7月5日,企鵝FM發(fā)布官方公告稱由于業(yè)務(wù)調(diào)整,將于9月6日正式停止運(yùn)營(yíng),這意味著騰訊音樂長(zhǎng)音頻業(yè)務(wù)走向消亡。騰訊在長(zhǎng)音頻領(lǐng)域還在摸索。為
  • 當(dāng)家的盒馬,加速謀生

    來源 | 價(jià)值星球Planet作者 | 歸去來自己“當(dāng)家”的盒馬,開始加速謀生了。據(jù)盒馬官微消息,盒馬計(jì)劃今年開放生鮮供應(yīng)鏈,將其生鮮商品送往食堂。目前,盒馬在上海已經(jīng)與
  • 華為HarmonyOS 4升級(jí)計(jì)劃公布:首批34款機(jī)型今日開啟公測(cè)

    8月4日消息,今天下午華為正式發(fā)布了HarmonyOS 4系統(tǒng),在更流暢的前提下,還帶來了不少新功能,UI設(shè)計(jì)也有變化,會(huì)讓手機(jī)煥然一新。華為宣布,首批機(jī)型將會(huì)在
  • iQOO 11S新品發(fā)布會(huì)

    iQOO將在7月4日19:00舉行新品發(fā)布會(huì),推出杭州亞運(yùn)會(huì)電競(jìng)賽事官方用機(jī)iQOO 11S。
  • 回歸OPPO兩年,一加贏了銷量,輸了品牌

    成為OPPO旗下主打性能的先鋒品牌后,一加屢創(chuàng)佳績(jī)。今年618期間,一加手機(jī)全渠道銷量同比增長(zhǎng)362%,憑借一加 11、一加 Ace 2、一加 Ace 2V三款爆品,一加
  • 最薄的14英寸游戲筆記本電腦 Alienware X14已可以購買

    2022年1月份在國(guó)際消費(fèi)電子展(CES2022)上首次亮相的Alienware新品——Alienware X14現(xiàn)在已經(jīng)可以購買了,這款筆記本電腦被譽(yù)為世界上最薄的 14 英寸游戲筆
Top 主站蜘蛛池模板: 赤水市| 江山市| 商水县| 左权县| 石河子市| 赞皇县| 伊宁市| 江津市| 德江县| 彭泽县| 民勤县| 临湘市| 绥中县| 武平县| 沙洋县| 鹿泉市| 珲春市| 临汾市| 贵德县| 金乡县| 顺义区| 益阳市| 平阴县| 永丰县| 行唐县| 类乌齐县| 屏东县| 姚安县| 布拖县| 涪陵区| 丰都县| 锦州市| 陇西县| 清涧县| 彭山县| 辽宁省| 安徽省| 泸定县| 铜梁县| 南京市| 侯马市|