我尝试测试两个从列表中设置:
首先从每个列表创建集合,然后结合到结果集 或创建一个列表并返回列表集。
我的结果看起来无论使用哪种方式,是这样吗?或者我的研究中有错误逻辑,或者可能存在这种联合的最佳方式?
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
答案 0 :(得分:2)
你的问题在于这个功能
def set_from_set(*args):
l= set()
for larg in args:
l.union(set(larg))
return l
.union()
函数returns a new set,它不会修改旧版本。