资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

怎么加速Python列表和字典

本篇内容主要讲解“怎么加速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毫秒。

到此,相信大家对“怎么加速Python列表和字典”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


文章题目:怎么加速Python列表和字典
地址分享:http://cdkjz.cn/article/jihjoo.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220