Python_Day5_性能优化&推导式

循环代码优化

遵循原则

  1. 减少内部循环
  2. 减少内部循环计算量,可以尽可能向外提
  3. 使用局部变量,查询较快
import time
#时间0.23
start = time.time()
for i in range (1000):
    result = []
    for j in range(1000):
        result.append(i*1000 + j*1000)
end = time.time()
print("耗时:{0}".format((end-start)))
#内部循环外提,时间0.16
start1 = time.time()
for i in range (1000):
    result = []
    k = i*1000
    for j in range(1000):
        result.append(k + j*1000)
end1 = time.time()
print("耗时:{0}".format((end1-start1 )))

其他优化

  1. 连接多个字符串,使用 join()而不使用+
  2. 列表进行元素插入和删除,尽量在列表尾部操作

ZIP()多个序列同时遍历

names = ("sxl","sxl1","sxl2","sxl3")
ages = (18,16,20,)
jobs = ("j1","j2","j3")
for name,age,job in zip(names,ages,jobs):
    print("{0}--{1}--{2}".format(name,age,job))

推导式

#列表推导式
>>> [x*2 for x in range(1,10) if x%2==0] 
[4, 8, 12, 16]

#集合推导式
>>> {x for x in range(1,10) if x%2!=0}
{1, 3, 5, 7, 9}

#字典推导式
#{key_expression : value_expression for 表达式 in 可迭代对象
>>> text = 'I am apple' 
>>> char_count = {a:text.count(a) for a in text} 
>>> char_count
{'I': 1, ' ': 2, 'a': 2, 'm': 1, 'p': 2, 'l': 1, 'e': 1}

#生成器推导式(生成元组)
>>> a = (x for x in range(1,10) if x%2!=0)		
>>> tuple(a) 
(1, 3, 5, 7, 9)
>>> a					#该生成器只能运行一次
<generator object <genexpr> at 0x00000261FE039CC8>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值