网站建设资讯

NEWS

网站建设资讯

Python在不同对象中使用 in 操作符的查找效率

前言

在Python中 in 操作符可以用于判断某个元素是否存在于当前对象中,而对于不同的Python对象,使用 in 操作符的处理效率是不一样的。

公司主营业务:成都网站建设、成都网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出巫山免费做网站回馈大家。

今天我们主要针对 4 种不同的Python数据类型进行学习:list列表、tuple元组、set集合、dict字典。

测试过程

我们用于测试的 4 种Python数据类型,分别为 tmp_listtmp_tupletmp_settmp_dict,测试过程中,它们所包含的元素都是相同的,均通过 random.randint(0, num) 随机生成,但它们的长度均为 num - 3 ,也就是说在 [0, num] 范围内,将有3个整数不在上面的对象中,我们需要把这3个整数找出来。

测试代码如下:

import time
import random


def demo(target, num):
    time1 = time.time()
    res = []
    for i in range(num):
        if i not in target:
            res.append(i)
    time2 = time.time()
    print("结果:{},当前类型:{},耗时:{}".format(res, type(target), time2 - time1))


num = 500
tmp_set = set()
while len(tmp_set) <= num - 3:
    tmp_set.add(random.randint(0, num))
tmp_list = list(tmp_set)
tmp_tuple = tuple(tmp_set)
tmp_dict = {key: "" for key in tmp_set}

demo(tmp_list, num)
demo(tmp_tuple, num)
demo(tmp_set, num)
demo(tmp_dict, num)

当 num = 50 时,得到如下结果:

不包含的整数:[25, 31, 36],当前类型:,耗时:0.0
不包含的整数:[25, 31, 36],当前类型:,耗时:0.0
不包含的整数:[25, 31, 36],当前类型:,耗时:0.0
不包含的整数:[25, 31, 36],当前类型:,耗时:0.0

当 num = 500 时,得到如下结果:

不包含的整数:[114, 329, 355],当前类型:,耗时:0.00
不包含的整数:[114, 329, 355],当前类型:,耗时:0.00
不包含的整数:[114, 329, 355],当前类型:,耗时:0.0
不包含的整数:[114, 329, 355],当前类型:,耗时:0.0

当 num = 5000 时,得到如下结果:

不包含的整数:[445, 850, 3547],当前类型:,耗时:0.
不包含的整数:[445, 850, 3547],当前类型:,耗时:0.
不包含的整数:[445, 850, 3547],当前类型:,耗时:0.000
不包含的整数:[445, 850, 3547],当前类型:,耗时:0.0

当 num = 时,得到如下结果:

不包含的整数:[9296, , ],当前类型:,耗时:26.
不包含的整数:[9296, , ],当前类型:,耗时:25.
不包含的整数:[9296, , ],当前类型:,耗时:0.00
不包含的整数:[9296, , ],当前类型:,耗时:0.00

当 num = 时,得到如下结果:

不包含的整数:[, , ],当前类型:,耗时:52.
不包含的整数:[, , ],当前类型:,耗时:52.
不包含的整数:[, , ],当前类型:,耗时:0.00
不包含的整数:[, , ],当前类型:,耗时:0.00

当 num = 时,得到如下结果:

不包含的整数:[, , ],当前类型:,耗时:75.
不包含的整数:[, , ],当前类型:,耗时:64.
不包含的整数:[, , ],当前类型:,耗时:0.00
不包含的整数:[, , ],当前类型:,耗时:0.00

当 num = 时,得到如下结果:

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流群:
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
不包含的整数:[, , ],当前类型:,耗时:110.
不包含的整数:[, , ],当前类型:,耗时:109.0
不包含的整数:[, , ],当前类型:,耗时:0.0
不包含的整数:[, , ],当前类型:,耗时:0.00

结论

通过上面的测试,我们可以看到,总体来说,list、tuple它们使用 in 操作符的查找效率相差不多,set、dict它们使用 in 操作符的查找效率相差不多,但随着查找数据量的增大,list、tuple的处理效率变得越来越慢,而set、dict的处理效率,将远远优于list及tuple。

list列表、tuple元组、set集合、dict字典,使用 in 操作符查找的平均时间复杂度如下:


当我们在处理数据量大且需频繁查找元素时,最好使用 set、dict ,这样将会大幅度提升处理速度。


名称栏目:Python在不同对象中使用 in 操作符的查找效率
浏览地址:http://cdweb.net/article/dsogigs.html