我尝试测试两个要想从列表中设置:Python的串连组或一列
在每个列表先创建组,然后工会结果集 或创建一个列表,并返回设定列表。
我的结果看起来像使用哪种方式,是这样吗?或者我在研究中有错误逻辑,或者可能存在这种联合的最佳方式?
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
你的'set_from_set'实际上并没有建立你想要的联合;它只是构造了一堆中间集并抛出它们,然后返回在第一行构建的空集。 – user2357112
为什么不只是'set()。union(l1,l2,l3)'? – user2357112
@ user2357112在真实我不知道多少列表我将有 –