>\python27\python -mtimeit -s"it=xrange(10000);a=set(xrange(100))" "a.update(it)"
1000 loops, best of 3: 294 usec per loop
>\python27\python -mtimeit -s"it=xrange(10000);a=set(xrange(100))" "for i in it:a.add(i)"
1000 loops, best of 3: 950 usec per loop
>\python27\python -mtimeit -s"it=xrange(10000);a=set(xrange(100))" "a |= set(it)"
1000 loops, best of 3: 458 usec per loop
>\python27\python -mtimeit -s"it=xrange(20000);a=set(xrange(100))" "a.update(it)"
1000 loops, best of 3: 598 usec per loop
>\python27\python -mtimeit -s"it=xrange(20000);a=set(xrange(100))" "for i in it:a.add(i)"
1000 loops, best of 3: 1.89 msec per loop
>\python27\python -mtimeit -s"it=xrange(20000);a=set(xrange(100))" "a |= set(it)"
1000 loops, best of 3: 891 usec per loop
为了让任何人相信在一个循环中做
aset.add()
与做aset.update()
具有竞争性的性能,下面是一个如何在上市前快速测试自己信念的示例:看起来循环方法的每项成本是
update
方法的三倍多。使用
|= set()
的成本大约是update
所做成本的1.5倍,但是在循环中添加每个单独项所做成本的一半。可以将
list
的元素添加到set
中,如下所示:可以使用set()函数将iterable转换为set,然后使用标准的set update运算符(|=)将新集合中的唯一值添加到现有集合中。
相关问题 更多 >
编程相关推荐