程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

10 Python code optimization tips

編輯:Python

PythonIt is a powerful interpreted programming language.我們可以通過下面的10optimization techniques to reduce the amount of code and improve the efficiency of the code.

  1. Make good use of the list(list)推導式

問題:輸出1The square of each number within ten thousand. Found that using list comprehensions takes less time.

from timeit import default_timer as timer

start = timer()
square =[]
for n in range(10000):
    square.append(pow(n,2))
end = timer()
print("優化前耗時:",end - start)

#優化後
start2=timer()
square=[pow(n,2) for n in range(10000)]
end2=timer()
print("優化後耗時:",end2 - start2)
print(square)
  1. 用PythonGenerators save runtime memory

如果對1Sum the squares of each number within ten thousand,換用PythonGenerator to store process data,We found that it takes up less memory.

import sys
square = [n**2 for n in range(10000)]  
print(sum(square))
print(sys.getsizeof(square),'字節') #優化後
square = (n\*\*2 for n in range(10000))
print(sum(square))
print(sys.getsizeof(square),'字節')
  1. 用sorted()The function quickly implements the ascending order of sequence elements,用reverse=True實現降序
lst=[20, 40, 20, 20, 40, 60, 70]
print(sorted(list(lst),reverse=True))
  1. 用集合setQuickly filter out duplicate elements
lst=[20, 40, 20, 20, 40, 60, 70]
# print(sorted(list(lst),reverse=True))
print(set(lst))
  1. 用enumerateTraverse the positions and values ​​of elements in the output sequence structure 用enumerate後,The output result remains unchanged,But the code is more concise.
dogs = ['Harley', 'Phantom', 'Lucky', 'Dingo']
count = 1
for name in dogs:
    print(count, name)
    count += 1
#優化後
print('優化後')
for i,name in enumerate(dogs,start=1):
    print(i,name)
  1. 用字典dictionary中get() 和setdefault()Set the value of the default key
roman_nums = {'I':1, 'II':2, 'III':3, 'IV':4 }
# value=roman_nums['V']  # An error will be reported when accessing a non-existing key value KeyError: 'V'
value=roman_nums.get('V',5)
print('value=',value)
print(roman_nums)
value = roman_nums.setdefault('V',5)
print(roman_nums)
  1. 用CounterCounts the most frequently occurring elements in the sequence structure
#統計出現次數最多的元素
#This method is introduced first
from collections import Counter
s='hello'
print(Counter(s)) 

#法二
print([(x,s.count(x)) for x in set(s)])
  1. f-Strings (Python 3.6+)格式化字符串
name,major = "world","computer science"

s="Hello, %s. I major in %s." % (name,major)
s1="Hello, {}. I major in {}.".format(name, major)
s2=f"Hello, {name}. I major in {major}." #推薦用法
print(s,s1,s2,sep='\n')

  1. join()Implement substring concatenation
s=['H','e','l','l','o']
s1=''
for x in s:
    s1+=x
print(s1)

s1=''.join(s)#推薦用法
print(s1)
  1. Dictionary mergedN種方法
#法一
x = {'a': 1, 'b': 2}
y = {'b': 10, 'c': 11}
x.update(y)
print(x)
#法二 Python3.9+
z = x | y
print(z)
#法三 Python3.5+
z = {**x, **y}
print(z)
#法四
z = dict(list(x.items()) + list(y.items()))
print(z)

如果喜歡,不忘了在微信文章的下面一鍵三連(分享,點贊和收藏).關注微信公眾號“樂享Python”.


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved