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

Python中最快的循環(huán)姿勢(shì)實(shí)例詳解

 更新時(shí)間:2021年11月01日 10:40:42   作者:somenzz  
python給我們提供了多個(gè)循環(huán)方法,比如while循環(huán)、for循環(huán)等,下面這篇文章主要給大家介紹了關(guān)于Python中最快的循環(huán)姿勢(shì),需要的朋友可以參考下

各種姿勢(shì)

比如說(shuō)有一個(gè)簡(jiǎn)單的任務(wù),就是從 1 累加到 1 億,我們至少可以有 7 種方法來(lái)實(shí)現(xiàn),列舉如下:

1、while 循環(huán)

def while_loop(n=100_000_000):
    i = 0
    s = 0
    while i < n:
        s += i
        i += 1
    return s

2、for 循環(huán)

def for_loop(n=100_000_000):
    s = 0
    for i in range(n):
        s += i
    return s

3、sum range

def sum_range(n=100_000_000):
    return sum(range(n))

4、sum generator(生成器)

def sum_generator(n=100_000_000):
    return sum(i for i in range(n))

5、sum list comprehension(列表推導(dǎo)式)

def sum_list_comp(n=100_000_000):
    return sum([i for i in range(n)])

6、sum numpy

import numpy
def sum_numpy(n=100_000_000):
    return numpy.sum(numpy.arange(n, dtype=numpy.int64))

7、sum numpy python range

import numpy
def sum_numpy_python_range(n=100_000_000):
    return numpy.sum(range(n))

上述 7 種方法得到的結(jié)果是一樣的,但是消耗的時(shí)間卻各不相同,你可以猜測(cè)一下哪一個(gè)方法最快,然后看下面代碼的執(zhí)行結(jié)果:

import timeit
 
def main():
    l_align = 25
    print(f'{"1、while 循環(huán)":<{l_align}} {timeit.timeit(while_loop, number=1):.6f}')
    print(f"{'2、for 循環(huán)':<{l_align}}  {timeit.timeit(for_loop, number=1):.6f}")
    print(f'{"3、sum range":<{l_align}} {timeit.timeit(sum_range, number=1):.6f}')
    print(f'{"4、sum generator":<{l_align}} {timeit.timeit(sum_generator, number=1):.6f}')
    print(f'{"5、sum list comprehension":<{l_align}} {timeit.timeit(sum_list_comp, number=1):.6f}')
    print(f'{"6、sum numpy":<{l_align}} {timeit.timeit(sum_numpy, number=1):.6f}')
    print(f'{"7、sum numpy python range":<{l_align}} {timeit.timeit(sum_numpy_python_range, number=1):.6f}')
 
if __name__ == '__main__':
    main()

執(zhí)行結(jié)果如下所示:

比較快的姿勢(shì)

for 比 while 塊

for 和 while 本質(zhì)上在做相同的事情,但是 while 是純 Python 代碼,而 for 是調(diào)用了 C 擴(kuò)展來(lái)對(duì)變量進(jìn)行遞增和邊界檢查,我們知道 CPython 解釋器就是 C 語(yǔ)言編寫(xiě)的,Python 代碼要比 C 代碼慢,而 for 循環(huán)代表 C,while 循環(huán)代表 Python,因此 for 比 while 快。

numpy 內(nèi)置的 sum 要比 Python 的 sum 快

numpy 主要是用 C 編寫(xiě)的,相同的功能,肯定是 numpy 的快,類似的,numpy 的 arange 肯定比 Python 的 range 快。

交叉使用會(huì)更慢

numpy 的 sum 與 Python 的 range 結(jié)合使用,結(jié)果耗時(shí)最長(zhǎng),見(jiàn)方法 7。最好是都使用 numpy 包來(lái)完成任務(wù),像方法 6。

生成器比列表推導(dǎo)式更快

生成器是惰性的,不會(huì)一下子生成 1 億個(gè)數(shù)字,而列表推導(dǎo)式會(huì)一下子申請(qǐng)全部的數(shù)字,內(nèi)存占有較高不說(shuō),還不能有效地利用緩存,因此性能稍差。

最后

本文分享了幾種遍歷求和的方法,對(duì)比了它們的性能,給出了相應(yīng)的結(jié)論

到此這篇關(guān)于Python中最快循環(huán)姿勢(shì)的文章就介紹到這了,更多相關(guān)Python最快循環(huán)姿勢(shì)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)EXCEL表格的排序功能示例

    Python實(shí)現(xiàn)EXCEL表格的排序功能示例

    這篇文章主要介紹了Python實(shí)現(xiàn)EXCEL表格的排序功能示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • python實(shí)現(xiàn)層次聚類的方法

    python實(shí)現(xiàn)層次聚類的方法

    層次聚類就是一層一層的進(jìn)行聚類,可以由上向下把大的類別(cluster)分割,叫作分裂法,這篇文章主要介紹了python實(shí)現(xiàn)層次聚類的方法,需要的朋友可以參考下
    2021-11-11
  • Python如何使用sqlalchemy實(shí)現(xiàn)動(dòng)態(tài)sql

    Python如何使用sqlalchemy實(shí)現(xiàn)動(dòng)態(tài)sql

    SQLAlchemy是一個(gè)功能強(qiáng)大的ORM(對(duì)象關(guān)系映射)工具,它提供了多種方式來(lái)生成SQL查詢,包括動(dòng)態(tài)SQL,下面我們就來(lái)學(xué)習(xí)一下具體的使用方法吧
    2024-12-12
  • 利用Python實(shí)現(xiàn)熱力圖的繪制

    利用Python實(shí)現(xiàn)熱力圖的繪制

    熱力圖,是一種通過(guò)對(duì)色塊著色來(lái)顯示數(shù)據(jù)的統(tǒng)計(jì)圖表。繪圖時(shí),需指定顏色映射的規(guī)則。本文主要用Python來(lái)實(shí)現(xiàn)熱力圖的制作,需要的可以參考一下
    2022-09-09
  • Pycharm自動(dòng)添加文件頭注釋和函數(shù)注釋參數(shù)的方法

    Pycharm自動(dòng)添加文件頭注釋和函數(shù)注釋參數(shù)的方法

    這篇文章主要介紹了Pycharm自動(dòng)添加文件頭注釋和函數(shù)注釋參數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Python?threading和Thread模塊及線程的實(shí)現(xiàn)

    Python?threading和Thread模塊及線程的實(shí)現(xiàn)

    這篇文章主要介紹了Python?threading和Thread模塊及線程的實(shí)現(xiàn),Python通過(guò)兩個(gè)標(biāo)準(zhǔn)庫(kù)thread和threading提供對(duì)線程的支持,threading對(duì)thread進(jìn)行了封裝,具體實(shí)現(xiàn)介紹需要的朋友可以參考一下下面文章內(nèi)容
    2022-06-06
  • 用vscode開(kāi)發(fā)python的步驟詳解

    用vscode開(kāi)發(fā)python的步驟詳解

    這篇文章主要介紹了用vscode開(kāi)發(fā)python的步驟詳解,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • python、Matlab求定積分的實(shí)現(xiàn)

    python、Matlab求定積分的實(shí)現(xiàn)

    今天小編就為大家分享一篇python、Matlab求定積分的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • Python機(jī)器學(xué)習(xí)之scikit-learn庫(kù)中KNN算法的封裝與使用方法

    Python機(jī)器學(xué)習(xí)之scikit-learn庫(kù)中KNN算法的封裝與使用方法

    這篇文章主要介紹了Python機(jī)器學(xué)習(xí)之scikit-learn庫(kù)中KNN算法的封裝與使用方法,結(jié)合實(shí)例形式分析了scikit-learn庫(kù)中KNN算法的相關(guān)調(diào)用與使用技巧,需要的朋友可以參考下
    2018-12-12
  • Python閉包裝飾器使用方法匯總

    Python閉包裝飾器使用方法匯總

    這篇文章主要介紹了Python閉包裝飾器使用方法匯總,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06

最新評(píng)論

宜丰县| 河北省| 锡林郭勒盟| 郯城县| 南京市| 灵宝市| 杂多县| 耒阳市| 长顺县| 轮台县| 佛学| 揭阳市| 安庆市| 青铜峡市| 囊谦县| 乳山市| 大同县| 开封市| 金平| 丰城市| 阿坝县| 峨边| 界首市| 义马市| 桦川县| 安溪县| 昌吉市| 包头市| 柘城县| 清远市| 开封县| 六安市| 兴国县| 延吉市| 扎赉特旗| 湖州市| 丽水市| 新沂市| 德兴市| 宁国市| 叶城县|