Python 列表推导式 - Python零基础入门教程
目錄
- 一.Python 列表推導(dǎo)式簡介
- 二.Python 列表推導(dǎo)式語法
- 三.Python 列表推導(dǎo)式練習(xí)
- 1.Python 列表推導(dǎo)式案例一
- 2.Python 列表推導(dǎo)式案例二
- 3.Python 列表推導(dǎo)式和循環(huán)效率對比
- 四.重點(diǎn)總結(jié)
- 五.猜你喜歡
零基礎(chǔ) Python 學(xué)習(xí)路線推薦 : Python 學(xué)習(xí)目錄 >> Python 基礎(chǔ)入門
一.Python 列表推導(dǎo)式簡介
上一篇文章中我們介紹了 Python 條件推導(dǎo)式,實(shí)際上就是把多行代碼合并為一行代碼的操作,使用列表推導(dǎo)式可以讓程序的運(yùn)行效率更高(文章末尾有具體講解),其實(shí)列表推導(dǎo)式其實(shí)和條件推導(dǎo)式類似;
Python 列表推導(dǎo)式是從一個或者多個迭代器快速簡潔地創(chuàng)建數(shù)據(jù)類型的一種方法,它將循環(huán)和條件判斷結(jié)合,從而避免語法冗長的代碼,提高代碼運(yùn)行效率。能熟練使用推導(dǎo)式也可以間接說明你已經(jīng)超越了 Python 初學(xué)者的水平**。**
Python 推導(dǎo)式相關(guān):
- 條件推導(dǎo)式
- 列表推導(dǎo)式
- 字典推導(dǎo)式
二.Python 列表推導(dǎo)式語法
列表推導(dǎo)式是條件推導(dǎo)式和循環(huán)一起配合使用,并返回一個列表 list,并且整個表達(dá)式需要在[]內(nèi),因?yàn)榉祷刂狄彩橇斜?list。
''' 語法一:exp1:在for循環(huán)中,如果x的值滿足條件表達(dá)式condition(即條件表達(dá)式成立),返回exp1;條件表達(dá)式不成立則不返回x:for循環(huán)中變量data:一個序列(比如:列表/元組/字符串等)condition:條件表達(dá)式 '''[exp1 for x in data if condition]''' 語法二:exp1:在for循環(huán)中,如果x的值滿足條件表達(dá)式condition(即條件表達(dá)式成立),返回exp1;條件表達(dá)式不成立則返回exp2condition:條件表達(dá)式exp2:在for循環(huán)中,如果x的值滿足條件表達(dá)式condition(即條件表達(dá)式成立),返回exp1;條件表達(dá)式不成立則返回exp2x:for循環(huán)中變量data:個序列(比如:列表/元組/字符串等)'''[exp1 if condition else exp2 for x in data]三.Python 列表推導(dǎo)式練習(xí)
1.Python 列表推導(dǎo)式案例一
獲取 0 ~ 20 的所有偶數(shù)并且乘以 10,并返回所有計(jì)算之后的結(jié)果。示例代碼如下:(使用 Python 列表推導(dǎo)式語法一實(shí)現(xiàn))
# !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:猿說編程 @Blog(個人博客地址): www.codersrc.com @File:Python Python 列表推導(dǎo)式.py @Time:2021/3/27 08:00 @Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅(jiān)持不懈地積累!"""''' 1.因?yàn)槭谦@取0~20,包括20,所以使用range(0,21) 2.x*10 等價(jià) 語法一中的exp1 3.x%2 == 0 等價(jià) 語法一中的條件表達(dá)式condition 4.range(0,21) 等價(jià) 語法一中的data(序列) '''list1 = [x*10 for x in range(0,21) if x%2 == 0] print(list1) print(type(list1))''' 輸出結(jié)果: [0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200] <class 'list'>'''2.Python 列表推導(dǎo)式案例二
將 0 ~ 20 的偶數(shù)乘以 10 ,奇數(shù)乘以 100 ,并返回所有計(jì)算之后的結(jié)果。示例代碼如下:(使用 Python 列表推導(dǎo)式語法二實(shí)現(xiàn))
# !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:猿說編程 @Blog(個人博客地址): www.codersrc.com @File:Python Python 列表推導(dǎo)式.py @Time:2021/3/27 08:00 @Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅(jiān)持不懈地積累!"""''' 1.因?yàn)槭谦@取0~20,包括20,所以使用range(0,21) 2.x*10 等價(jià) 語法二中的exp1 3.x*100 等價(jià) 語法二中的exp2 4.x%2 == 0 等價(jià) 語法二中的條件表達(dá)式condition 5.range(0,21) 等價(jià) 語法一中的data(序列) '''list2 = [x*10 if x%2 == 0 else x*100 for x in range(0,21) ] print(list2) print(type(list2))''' 輸出結(jié)果: [0, 100, 20, 300, 40, 500, 60, 700, 80, 900, 100, 1100, 120, 1300, 140, 1500, 160, 1700, 180, 1900, 200] <class 'list'>'''3.Python 列表推導(dǎo)式和循環(huán)效率對比
可能有童鞋納悶,我明明 for 循環(huán) 或者 while 循環(huán)就能實(shí)現(xiàn)的功能,為毛要用這鳥玩意推導(dǎo)式?
使用列表推導(dǎo)式的效率遠(yuǎn)遠(yuǎn)高于 for 循環(huán),可能執(zhí)行一句 print(“helloworld”) 對于 cpu 而已只需要 0.0002 秒,你可能感覺不到差距,如果需要輸出一億次 helloworld 呢?往往細(xì)節(jié)覺得成敗!
假如有一個需求:將 0 ~ 10000000 (一億)以內(nèi)的所有整數(shù)存到列表中,對比一下 Python 列表推導(dǎo)式 和 for 循環(huán)耗時(shí)情況:
# !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:猿說編程 @Blog(個人博客地址): www.codersrc.com @File:Python Python 列表推導(dǎo)式.py @Time:2021/3/27 08:00 @Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅(jiān)持不懈地積累!"""import time # 添加time模塊,用于統(tǒng)計(jì)代碼運(yùn)行時(shí)間#一共添加10000000次數(shù)據(jù)到列表中 total_num = 10000000#使用列表推導(dǎo)式 start_time = time.time() list1 = [x for x in range(0,total_num)] # 列表推導(dǎo)式 end_time = time.time() print("使用列表推導(dǎo)式耗時(shí):{}秒".format(end_time-start_time))#使用普通for循環(huán) start_time = time.time() list2 = list() for x in range(0,total_num): # for循環(huán)list2.append(x) end_time = time.time() print("使用普通for循環(huán)耗時(shí):{}秒".format(end_time-start_time))''' 輸出結(jié)果: 使用列表推導(dǎo)式耗時(shí):0.5455152988433838秒 使用普通for循環(huán)耗時(shí):1.2068836688995361秒 '''輸出結(jié)果很明顯,實(shí)現(xiàn)通用的功能,Python 列表推導(dǎo)式的效率整整高出普通 for 循環(huán)一倍。
最后溫馨提醒:測試請把循環(huán)次數(shù)改小一點(diǎn),畢竟剛開始不小心多加了幾圈圈,電腦死機(jī)了!
四.重點(diǎn)總結(jié)
- 1.注意在 Python 列表推導(dǎo)式書寫的時(shí)候,所有表達(dá)式都必須在 [] 內(nèi)部,因?yàn)榉祷刂凳橇斜?list
- 2.列表推導(dǎo)式是 Python 開發(fā)學(xué)習(xí)的知識點(diǎn),多多聯(lián)系,熟能生巧.
五.猜你喜歡
未經(jīng)允許不得轉(zhuǎn)載:猿說編程 ? Python 列表推導(dǎo)式
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的Python 列表推导式 - Python零基础入门教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BugkuCTF-Crypto题简单加密
- 下一篇: BugkuCTF-Reverse题eas