五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動(dòng)態(tài)

Python性能調(diào)優(yōu)的十個(gè)小技巧總結(jié)

發(fā)布日期:2021-12-09 09:53 | 文章來(lái)源:CSDN

1 多多使用列表生成式

替換下面代碼:

cube_numbers = []
  for n in range(0,10):
 if n % 2 == 1:
cube_numbers.append(n**3)

為列表生成式寫法:

cube_numbers = [n**3 for n in range(1,10) if n%2 == 1]

2 內(nèi)置函數(shù)

盡可能多使用下面這些內(nèi)置函數(shù):

3 盡可能使用生成器

單機(jī)處理較大數(shù)據(jù)量時(shí),生成器往往很有用,因?yàn)樗欠中∑鸫巫x取,最大程度節(jié)省內(nèi)存,如下網(wǎng)頁(yè)爬取時(shí)使用yield

import requests
import re
def get_pages(link):
  pages_to_visit = []
  pages_to_visit.append(link)
  pattern = re.compile('https?')
  while pages_to_visit:
 current_page = pages_to_visit.pop(0)
 page = requests.get(current_page)
 for url in re.findall('<a href="([^" rel="external nofollow" ]+)">', str(page.content)):
if url[0] == '/':
  url = current_page + url[1:]
if pattern.match(url):
  pages_to_visit.append(url)
 # yield
 yield current_page
webpage = get_pages('http://www.example.com')
for result in webpage:
  print(result)

4 判斷成員所屬關(guān)系最快的方法使用 in

for name in member_list:
  print('{} is a member'.format(name))

5 使用集合求交集

替換下面代碼:

a = [1,2,3,4,5]
b = [2,3,4,5,6]
overlaps = []
for x in a:
  for y in b:
 if x==y:
overlaps.append(x)
print(overlaps)

修改為set和求交集:

a = [1,2,3,4,5]
b = [2,3,4,5,6]
overlaps = set(a) & set(b)
print(overlaps)

6 多重賦值

Python支持多重賦值的風(fēng)格,要多多使用

first_name, last_name, city = "Kevin", "Cunningham", "Brighton"

7 盡量少用全局變量

Python查找最快、效率最高的是局部變量,查找全局變量相對(duì)變慢很多,因此多用局部變量,少用全局變量。

8 高效的itertools模塊

itertools模塊支持多個(gè)迭代器的操作,提供最節(jié)省內(nèi)存的寫法,因此要多多使用,如下求三個(gè)元素的全排列:

import itertools
iter = itertools.permutations(["Alice", "Bob", "Carol"])
list(iter)

9 lru_cache 緩存

位于functools模塊的lru_cache裝飾器提供了緩存功能,如下結(jié)合它和遞歸求解斐波那契數(shù)列第n:

import functools
@functools.lru_cache(maxsize=128)
def fibonacci(n):
  if n == 0:
 return 0
  elif n == 1:
 return 1
  return fibonacci(n - 1) + fibonacci(n-2)

因此,下面的遞歸寫法非常低效,存在重復(fù)求解多個(gè)子問(wèn)題的情況:

def fibonacci(n):
  if n == 0: # There is no 0'th number
 return 0
  elif n == 1: # We define the first number as 1
 return 1
  return fibonacci(n - 1) + fibonacci(n-2)

10 內(nèi)置函數(shù)、key和itemgetter

上面提到盡量多使用內(nèi)置函數(shù),如下對(duì)列表排序使用keyoperator.itemgetter

import operator
my_list = [("Josh", "Grobin", "Singer"), ("Marco", "Polo", "General"), ("Ada", "Lovelace", "Scientist")]
my_list.sort(key=operator.itemgetter(0))
my_list

技術(shù)交流

歡迎轉(zhuǎn)載、收藏、有所收獲點(diǎn)贊支持一下!

到此這篇關(guān)于Python性能調(diào)優(yōu)的十個(gè)小技巧總結(jié)的文章就介紹到這了,更多相關(guān)Python 性能調(diào)優(yōu)內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!

版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問(wèn)服務(wù)

1對(duì)1客戶咨詢顧問(wèn)

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部