以下的讨论这个问题,让我知道,所以我决定运行一些测试和比较的创建时间set((x,y,z))与{x,y,z}在Python中创建集(我使用Python 3.7)。
我使用time和比较了两种方法timeit。两者都与以下结果一致*:
test1 = """
my_set1 = set((1, 2, 3))
"""
print(timeit(test1))
结果:0.30240735499999993
test2 = """
my_set2 = {1,2,3}
"""
print(timeit(test2))
结果:0.10771795900000003
所以第二种方法几乎比第一种方法快 3 倍。这对我来说是一个非常令人惊讶的差异。set()以这种方式优化 set 文字在方法上的性能在幕后发生了什么?在哪些情况下建议使用哪种方法?
* 注意:我只显示timeit测试结果,因为它们是在许多样本上取平均值的,因此可能更可靠,但测试time结果在两种情况下显示出相似的差异。
编辑:我知道这个类似的问题,虽然它回答了我原来问题的某些方面,但并没有涵盖所有方面。问题中没有解决集合,并且由于空集合在 python 中没有文字语法,我很好奇使用文字创建集合与使用该set()方法有何不同(如果有的话)。另外,我想知道的是如何处理的元组参数中set((x,y,z)会在幕后,什么是运行时可能产生的影响。Coldspeed 的出色回答帮助解决了问题。
温温酱
相关分类