Python连接SET或LIST

时间:2017-10-20 18:49:44

标签: python python-3.x list set

我尝试测试两个从列表中设置:

首先从每个列表创建集合,然后结合到结果集 或创建一个列表并返回列表集。

我的结果看起来无论使用哪种方式,是这样吗?或者我的研究中有错误逻辑,或者可能存在这种联合的最佳方式?

import time


def set_from_set(*args):
    l = set()
    return set().union(*args)


def set_from_list(*args):
    l = []
    for larg in args:
        l += larg
    return set(l)


l1 = [x for x in range(1000000)]
l2 = [x for x in range(1000000)]
l3 = [x for x in range(1000000)]
dl1, dl2 = 0, 0

for x in range(100):
    start = time.time()
    set_from_list(l1, l2, l3)
    dl1 += time.time() - start


for x in range(100):
    start = time.time()
    set_from_set(l1, l2, l3)
    dl2 += time.time() - start


print(dl1, dl2)

结果:

  

19.815733194351196 16.40732741355896

1 个答案:

答案 0 :(得分:2)

你的问题在于这个功能

def set_from_set(*args):
     l= set()
     for larg in args:
         l.union(set(larg))
     return l

.union()函数returns a new set,它不会修改旧版本。