运行效率

(1)针对循环的优化

每次你调用str.upper, Python都会计算这个式子的值。然而,如果你把这个求值赋值给一个变量,那么求值的结果就能提前知道,Python程序就能运行得更快。
因此,关键就是尽可能减小Python在循环中的工作量。因为Python解释执行的特性,在上面的例子中会大大减慢它的速度。
lowerlist=['this','is','lowercase']
upperlist=[]
for word in lowerlist:
    upperlist.append(str.upper(word))
    print(upperlist)

print("********优化后************")

lowerlist=['this','is','lowercase']
upperlist=[]

upper=str.upper
append=upperlist.append

for word in lowerlist:
    append(upper(word))
    print(upperlist)
for i in range(100):
    myLib.findMe(i)
print("****优化后 **********")
fimdMe=myLib.findMe
for i in range(100):
    fimdMe(i)

 

(2)尝试多种编码方法

在处理字典中的数据项时,你既可以使用安全的方法,先确保数据项已经存在再进行更新,也可以直接对数据项进行更新,把不存在的数据项作为特例分开处理。
当一开始myDict为空时,这段代码会跑得比较快。然而,通常情况下,myDict填满了数据,至少填有大部分数据,这时换另一种方法会更有效率。
n=16
myDict={}

for i in range(0,n):
    char='abcd'[i%4]

    if char not in myDict:
        myDict[char]=0

    myDict[char]+=1

print(myDict)
print("*****优化后***********")

n=16
myDict={}

for i in range(0,n):
    char='abcd'[i%4]
    try:
        myDict[char]+=1
    except KeyError:
        myDict[char]=1

print(myDict)

(3) 有选择性的消除属性访问。

如多用from math import sqrt 而不要直接在程序中多次调用 math.sqrt(),或直接声明局部变量。

import math
def compute_roots(nums):
    sqrt=math.sqrt
    res = []
    res_append = res.append
    for n in nums:
        res_append(sqrt(n))
    return res

print("****优化后 **********")

from math import sqrt
def compute_roots(nums):
    res = []
    res_append = res.append
    for n in nums:
        res_append(sqrt(n))
    return res

 (4)用If语句进行优化。 

user = 'Tamir'
passwd = 'Tamir123'
username = input("username:")
password = input("password:")
if user == username:
    if password == passwd:
        print("Welcome login...")
    else:
        print("password is invalid....")
else:
    print("password is invalid....")


print("*************优化后*************")
if user == username and password == passwd:
    print("Welcome login...")
else:
    print("password is invalid....")

 (5)在排序时使用键

dict_data={6:9,10:5,3:11,8:2,7:6}


#方式一
test0=sorted(dict_data.keys())
print(test0)

test1=sorted(dict_data.items(),key=lambda x:x[0])
print(test1)

test2=sorted(dict_data.items(),key=lambda x:x[1])
print(test2)

#方式二
import operator
test3=sorted(dict_data.items(),key=operator.itemgetter(0))
print(test3)

test4=sorted(dict_data.items(),key=operator.itemgetter(1))
print(test4)

 

posted on 2020-11-18 15:34  happygril3  阅读(373)  评论(0)    收藏  举报

导航