最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中從for循環(huán)延申到推導(dǎo)式的具體使用

 更新時(shí)間:2019年11月29日 09:28:59   作者:No later  
這篇文章主要介紹了python中從for循環(huán)延申到推導(dǎo)式的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

本文采用循序漸進(jìn)的寫法,逐步遞進(jìn).

傳統(tǒng)for循環(huán):

#獲取1到1000000的偶數(shù)
#采用傳統(tǒng)寫法(俗稱普通解析)
for i in range(1,10**6+1):
 if(i%2==0):
 print(i)
#程序運(yùn)行結(jié)果:
#2
#4
#.
#.
#.
#1000000

總結(jié)(從直觀上對代碼進(jìn)行評價(jià)):能完成要求,但是代碼不夠簡潔.

改進(jìn)后的代碼,采用列表推導(dǎo)式:

#獲取1到1000000的偶數(shù)
#采用列表推導(dǎo)式(俗稱列表解析)
print([i for i in range(1,10**6+1) if i%2==0])
#程序運(yùn)行結(jié)果:
#2
#4
#.
#.
#.
#1000000

我們再來從代碼運(yùn)行速度上評價(jià)代碼.

傳統(tǒng)for循環(huán)的運(yùn)行速度:

#采用clock()函數(shù)進(jìn)行測量代碼運(yùn)行時(shí)間
#用以浮點(diǎn)數(shù)計(jì)算的秒數(shù)返回當(dāng)前的CPU時(shí)間,用來衡量不同程序的耗時(shí),比time.time()更精確
import time
cpu_start=time.clock()
for i in range(1,10**6+1):
 if(i%2==0):
 print(i)
cpu_end=time.clock()
print("程序運(yùn)行時(shí)間:",cpu_end-cpu_start)
#程序運(yùn)行結(jié)果:
#2
#4
#.
#.
#.
#1000000
#程序運(yùn)行時(shí)間: 2.1866424
#注意:編譯器在3.3-3.8之間的會(huì)報(bào)一個(gè)警告:DeprecationWarning: time.clock has been deprecated in Python 3.3 and will be removed from Python 3.8: use time.perf_counter or time.process_time instead
#因?yàn)閜ython3.3以后不被推薦使用,該方法依賴操作系統(tǒng),建議使用per_counter(返回系統(tǒng)運(yùn)行時(shí)間)或process_time(返回進(jìn)程運(yùn)行時(shí)間)代替

采用列表推導(dǎo)式的運(yùn)行速度:

#采用clock()函數(shù)進(jìn)行測量代碼運(yùn)行時(shí)間
#用以浮點(diǎn)數(shù)計(jì)算的秒數(shù)返回當(dāng)前的CPU時(shí)間,用來衡量不同程序的耗時(shí),比time.time()更精確
import time
cpu_start=time.clock()
print([i for i in range(1,10**6+1) if i%2==0])
cpu_end=time.clock()
print("程序運(yùn)行時(shí)間:",cpu_end-cpu_start)
#程序運(yùn)行結(jié)果:
#[2,4,6,8...1000000]
#程序運(yùn)行時(shí)間: 0.005884400000000012
#注意:編譯器在3.3-3.8之間的會(huì)報(bào)一個(gè)警告:DeprecationWarning: time.clock has been deprecated in Python 3.3 and will be removed from Python 3.8: use time.perf_counter or time.process_time instead
#因?yàn)閜ython3.3以后不被推薦使用,該方法依賴操作系統(tǒng),建議使用per_counter(返回系統(tǒng)運(yùn)行時(shí)間)或process_time(返回進(jìn)程運(yùn)行時(shí)間)代替

總結(jié)(從代碼運(yùn)行速度上進(jìn)行評價(jià)):很明顯采用列表推導(dǎo)式的代碼,運(yùn)行速度是更勝一籌的.

結(jié)論:

1.編譯器會(huì)優(yōu)化,不會(huì)因?yàn)楹唽懚绊懶?,反而因?yōu)化提高了效率.
2. 減少程序員工作量,減少出錯(cuò).
3. 即簡化了代碼,又增強(qiáng)了代碼的可讀性.

那么存在列表解析式是否存在集合推導(dǎo)式,字典推導(dǎo)式,元組推導(dǎo)式,我們來一探究竟吧!這里就不再探究他們的運(yùn)行速度了!

集合推導(dǎo)式:

#集合推導(dǎo)式
#獲取1到1000000的偶數(shù)
x={i for i in range(1,10**6+1) if i%2==0}
type(x)
#輸出結(jié)果:
#{2,4,6,8...1000000}
#<class 'set'>

字典推導(dǎo)式:

#獲取值是偶數(shù)的所有鍵值對形成的字典
#采用傳統(tǒng)方法
dict={'名字1': 1, '名字二': 2, '名字三': 3, '名字四': 4}
dict_x={}
for i,j in dict.items():
  if(j%2==0):
    dict_x[i]=j
print(dict_x)
print(type(dict_x))
#{'名字二': 2, '名字四': 4}
#<class 'dict'>
#獲取值是偶數(shù)的所有鍵值對形成的字典
#字典推導(dǎo)式
#方法一
#采用zip函數(shù)與for循環(huán)將兩個(gè)列表的值逐步遍歷作為字典的鍵與值
x = {i : j for i, j in zip(["名字1", "名字二", "名字三", "名字四"], [1,2,3,4]) if j%2==0}
print(x)
print(type(x))
#運(yùn)行結(jié)果:
#{'名字二': 2, '名字四': 4}
#<class 'dict'>

#方法二
#獲取值是偶數(shù)的所有鍵值對形成的字典
#采用items()函數(shù)進(jìn)行迭代遍歷
dict={'名字1': 1, '名字二': 2, '名字三': 3, '名字四': 4}
x = {i : j for i, j in dict.items() if j%2==0}
print(x)
print(type(x))
#運(yùn)行結(jié)果:
#{'名字二': 2, '名字四': 4}
#<class 'dict'>

元組推導(dǎo)式:

#獲取1到1000000的偶數(shù)
x=(i for i in range(1,10**6+1) if i%2==0)
print(x)
type(x)
#輸出結(jié)果:
#<generator object <genexpr> at 0x00000241FFAB2750>
#<class 'generator'>

咦!前面都返回?cái)?shù)組或者集合或字典,這個(gè)怎么返回了生成器(genexpr),這是因?yàn)樵M是不可變的。我們來訪問一下里面的元素把!

#獲取值是偶數(shù)的所有鍵值對形成的字典
x=(i for i in range(1,10**6+1) if i%2==0)
for i in x:
 print(i)
#輸出結(jié)果:
#2
#4
#.
#.
#.
#1000000

 總結(jié):推導(dǎo)式雖然有很多優(yōu)點(diǎn),但是唯一不足的就是局部變量的可讀性不高.

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Caffe數(shù)據(jù)可視化環(huán)境python接口配置教程示例

    Caffe數(shù)據(jù)可視化環(huán)境python接口配置教程示例

    這篇文章主要為大家介紹了Caffe數(shù)據(jù)可視化環(huán)境python接口配置教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • pyqt5制作登錄窗口的詳細(xì)過程

    pyqt5制作登錄窗口的詳細(xì)過程

    這篇文章主要介紹了pyqt5制作登錄窗口的詳細(xì)過程,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • Window10下python3.7 安裝與卸載教程圖解

    Window10下python3.7 安裝與卸載教程圖解

    本文通過圖文并茂的形式給大家介紹了WINDOW10下PYTHON3.7 安裝與卸載,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Django獲取應(yīng)用下的所有models的例子

    Django獲取應(yīng)用下的所有models的例子

    今天小編就為大家分享一篇Django獲取應(yīng)用下的所有models的例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 帶你一文讀懂Python垃圾回收機(jī)制

    帶你一文讀懂Python垃圾回收機(jī)制

    這篇文章主要介紹了帶你一文讀懂Python垃圾回收機(jī)制,如果對其垃圾回收機(jī)制不了解,很多時(shí)候?qū)懗龅?nbsp;Python 代碼會(huì)非常低效,需要的朋友可以參考下
    2023-04-04
  • Django實(shí)現(xiàn)whoosh搜索引擎使用jieba分詞

    Django實(shí)現(xiàn)whoosh搜索引擎使用jieba分詞

    這篇文章主要介紹了Django實(shí)現(xiàn)whoosh搜索引擎使用jieba分詞,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 淺談django rest jwt vue 跨域問題

    淺談django rest jwt vue 跨域問題

    這篇文章主要介紹了django rest jwt vue 跨域問題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-10-10
  • Python imread、newaxis用法詳解

    Python imread、newaxis用法詳解

    這篇文章主要介紹了python imread、newaxis用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Python實(shí)現(xiàn)手勢識別

    Python實(shí)現(xiàn)手勢識別

    這篇文章主要介紹了Python如何實(shí)現(xiàn)手指指尖的檢測,并且可以在windows系統(tǒng)下通過判斷手指數(shù)目,來模擬鍵盤操作,感興趣的朋友可以了解下
    2020-10-10
  • Pandas對CSV文件讀寫操作詳解

    Pandas對CSV文件讀寫操作詳解

    本文帶你了解CSV文件的基礎(chǔ)知識,那么當(dāng)需要處理導(dǎo)入數(shù)據(jù)時(shí),大多數(shù)?CSV?讀取、處理和寫入任務(wù)都可以通過基本的?Python?csv?庫輕松處理。如果大量數(shù)據(jù)要讀取和處理,該pandas庫還提供快速簡便的?CSV?處理功能
    2022-04-04

最新評論

和田县| 齐河县| 晋城| 收藏| 昭觉县| 灌阳县| 措勤县| 平顶山市| 察雅县| 虹口区| 济南市| 巩义市| 临泽县| 六盘水市| 紫阳县| 晋州市| 铁岭县| 海宁市| 兴城市| 衡水市| 新巴尔虎右旗| 穆棱市| 通化市| 桃园县| 南溪县| 松滋市| 泗阳县| 本溪| 隆子县| 博湖县| 万州区| 漠河县| 加查县| 垦利县| 平远县| 元江| 汤原县| 柘城县| 朔州市| 孙吴县| 龙岩市|