作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Python 中,给定一组可比较的、可散列的元素 s
,散列 frozenset(s)
或 tuple(sorted(s)) 哪个更好?
。
最佳答案
这取决于你在做什么。创建 frozenset()
比排序 tuple
更快,但是 frozenset
比 tuple
占用更多内存。
创建 frozenset
比创建 tuple
更快:
import timeit
import random as rn
x = range(2000)
rn.shuffle(x)
x = tuple(x)
def get_frozen_set(x):
return frozenset(x)
def get_sorted_tuple(x):
return sorted(x)
n = 10000
t1 = timeit.timeit('get_frozen_set(x)', 'from __main__ import x, get_frozen_set', number = n)
print 'create a frozenset:', t1
t2 = timeit.timeit('get_sorted_tuple(x)','from __main__ import x, get_sorted_tuple', number = n)
print 'sort tuple:', t2
结果:
create a frozenset: 0.85803164112
sort tuple: 6.65848886198
虽然区别很大,因为启动tuple
很短。对于 n = 20
结果:
create a frozenset: 0.0124568308591
sort tuple: 0.0257906431368
frozenset
占用了更多的 memory
,这是说明 here 。
frozenset
和 tuple
, here 之间的查找时间差异非常小
关于python - 散列 frozenset 与 tuple of sorted,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14534495/
我是一名优秀的程序员,十分优秀!