加速Python列表和字典,让你代码更加高效

今天,加速我们将讨论Python中的列表优化技术。在本文中,和字您将了解如何通过避免在列表和字典中进行重新计算来加快代码的典让代码速度。

我们先编写一个装饰器函数来计算函数的更加高效执行时间,方便测验不同代码的加速速度:

import functools import time def timeit(func):     @functools.wraps(func)     def newfunc(*args, **kwargs):         startTime = time.time()         func(*args, **kwargs)         elapsedTime = time.time() - startTime         print(function - { }, took { } ms to complete.format(func.__name__, int(elapsedTime * 1000)))     return newfunc 

一、避免在列表中重新评估

1. 在循环内

代码:

@timeit def append_inside_loop(limit):     nums = []     for num in limit:         nums.append(num) append_inside_loop(list(range(1,列表 9999999))) 

在上面的高防服务器函数中.append每次通过循环重新计算的函数引用。执行后,和字上述函数所花费的典让代码总时间:

o/p - function - append_inside_loop, took 529 ms to complete 

2. 在循环外

代码:

@timeit def append_outside_loop(limit):     nums = []     append = nums.append     for num in limit:         append(num) append_outside_loop(list(range(1, 9999999))) 

在上面的函数中,我们对nums.append在循环外部估值,更加高效并在循环内部使用append为变量。加速总时间:

o/p - function - append_outside_loop,列表 took 328 ms to complete 

如您所见,当我们在​for循环外部追加为一个本地变量,服务器租用和字这将花费更少的典让代码时间,可以将代码加速201 ms。更加高效​

二、避免在字典中重新求值

1. 在循环内部

代码:

@timeit def inside_evaluation(limit):     data = { }     for num in limit:         data[num] = data.get(num, 0) + 1 inside_evaluation(list(range(1, 9999999))) 

上述函数所花费的总时间:

o/p - function - inside_evaluation, took 1400 ms to complete 

2. 在循环外

代码:

@timeit def outside_evaluation(limit):     data = { }     get = data.get     for num in limit:         data[num] = get(num, 0) + 1 outside_evaluation(list(range(1, 9999999))) 

上述函数所花费的总时间:

o/p - function - outside_evaluation, took 1189 ms to complete 

如你所见,我们这里的代码速度提高了211毫秒。

英文原文:https://dev.to/sharmapacific/speedup-python-list-and-dictionary-12kd

站群服务器
数据库
上一篇:2016年1月1日:注册价格将降至每年7欧元。
下一篇:为什么大家都选优质域名?到底存在着什么好处?