欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

優(yōu)化python效率的方法有哪些-創(chuàng)新互聯

這篇文章給大家分享的是有關優(yōu)化python效率的方法有哪些的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

創(chuàng)新互聯公司-專業(yè)網站定制、快速模板網站建設、高性價比順城網站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式順城網站制作公司更省心,省錢,快速模板網站建設找我們,業(yè)務覆蓋順城地區(qū)。費用合理售后完善,10余年實體公司更值得信賴。

優(yōu)化python的效率的方法:1、優(yōu)化算法時間復雜度;2、減少冗余數據;3、合理使用copy與deepcopy;4、使用dict或set查找元素;5、合理使用生成器(generator)和yield。

優(yōu)化python效率的方法有哪些

優(yōu)化方法:

1、優(yōu)化算法時間復雜度

算法的時間復雜度對程序的執(zhí)行效率影響大,在Python中可以通過選擇合適的數據結構來優(yōu)化時間復雜度,如list和set查找某一個元素的時間復雜度分別是O(n)和O(1)。

2、減少冗余數據

如用上三角或下三角的方式去保存一個大的對稱矩陣。在0元素占大多數的矩陣里使用稀疏矩陣表示。

3、合理使用copy與deepcopy

對于dict和list等數據結構的對象,直接賦值使用的是引用的方式。而有些情況下需要復制整個對象,這時可以使用copy包里的copy和deepcopy,這兩個函數的不同之處在于后者是遞歸復制的。效率也不一樣:(以下程序在ipython中運行)

import copy
a = range(100000)
%timeit -n 10 copy.copy(a) # 運行10次 copy.copy(a)
%timeit -n 10 copy.deepcopy(a)
10 loops, best of 3: 1.55 ms per loop
10 loops, best of 3: 151 ms per loop

timeit后面的-n表示運行的次數,后兩行對應的是兩個timeit的輸出,下同。由此可見后者慢一個數量級。

4、使用dict或set查找元素

python dict和set都是使用hash表來實現(類似c++11標準庫中unordered_map),查找元素的時間復雜度是O(1)

a = range(1000)
s = set(a)
d = dict((i,1) for i in a)
%timeit -n 10000 100 in d
%timeit -n 10000 100 in s
10000 loops, best of 3: 43.5 ns per loop
10000 loops, best of 3: 49.6 ns per loop

dict的效率略高(占用的空間也多一些)。

5、合理使用生成器(generator)和yield

%timeit -n 100 a = (i for i in range(100000))
%timeit -n 100 b = [i for i in range(100000)]
100 loops, best of 3: 1.54 ms per loop
100 loops, best of 3: 4.56 ms per loop

使用()得到的是一個generator對象,所需要的內存空間與列表的大小無關,所以效率會高一些。在具體應用上,比如set(i for i in range(100000))會比set([i for i in range(100000)])快。

但是對于需要循環(huán)遍歷的情況:

%timeit -n 10 for x in (i for i in range(100000)): pass
%timeit -n 10 for x in [i for i in range(100000)]: pass
10 loops, best of 3: 6.51 ms per loop
10 loops, best of 3: 5.54 ms per loop

后者的效率反而更高,但是如果循環(huán)里有break,用generator的好處是顯而易見的。yield也是用于創(chuàng)建generator:

def yield_func(ls):
for i in ls:
yield i+1
 def not_yield_func(ls):
return [i+1 for i in ls]
 ls = range(1000000)
%timeit -n 10 for i in yield_func(ls):pass
%timeit -n 10 for i in not_yield_func(ls):pass
10 loops, best of 3: 63.8 ms per loop
10 loops, best of 3: 62.9 ms per loop

對于內存不是非常大的list,可以直接返回一個list,但是可讀性yield更佳(人個喜好)。

python2.x內置generator功能的有xrange函數、itertools包等。

感謝各位的閱讀!關于優(yōu)化python效率的方法有哪些就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

分享名稱:優(yōu)化python效率的方法有哪些-創(chuàng)新互聯
URL網址:http://chinadenli.net/article48/peiep.html

成都網站建設公司_創(chuàng)新互聯,為您提供Google網站維護、網站設計公司、企業(yè)網站制作關鍵詞優(yōu)化、電子商務

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

h5響應式網站建設
久久精品视频就在久久| 成年女人午夜在线视频| 国产传媒免费观看视频| 日本少妇中文字幕不卡视频| 日韩一区二区三区观看| 少妇丰满a一区二区三区| 日本成人三级在线播放| 热久久这里只有精品视频| 亚洲国产成人爱av在线播放下载| 性感少妇无套内射在线视频| 欧美日韩国产精品黄片| 国产成人精品一区在线观看| 国产91人妻精品一区二区三区| 日韩美成人免费在线视频| 熟妇人妻av中文字幕老熟妇| 国产传媒一区二区三区| 国产福利在线播放麻豆| 99久久精品国产麻豆| 欧美亚洲美女资源国产| 欧美夫妻性生活一区二区| 成人国产激情福利久久| 日韩精品综合福利在线观看| 最新国产欧美精品91| 在线中文字幕亚洲欧美一区| 91爽人人爽人人插人人爽| 亚洲最新一区二区三区| 国产精品久久熟女吞精| 国产精品不卡一区二区三区四区| 国产欧美性成人精品午夜| 日韩性生活片免费观看| 国产日韩精品激情在线观看| 日韩精品日韩激情日韩综合| 精品欧美一区二区三久久| 国产精品一区二区高潮| 一区二区三区人妻在线| 免费高清欧美一区二区视频| 国产av精品高清一区二区三区 | 伊人久久青草地综合婷婷| 精品国产成人av一区二区三区| 在线懂色一区二区三区精品| 我要看日本黄色小视频|