相关疑难解决方法(0)

如何实现set()?

我见过有人说setpython 中的对象有O(1)成员资格检查.它们如何在内部实施以实现这一目标?它使用什么样的数据结构?该实施还有哪些其他含义?

这里的每个答案都很有启发性,但我只能接受一个,所以我会用最接近我原来问题的答案.谢谢你的信息!

python cpython set data-structures

140
推荐指数
6
解决办法
5万
查看次数

Python生成器对象:__sizeof __()

这可能是一个愚蠢的问题,但无论如何我都会问.我有一个生成器对象:

>>> def gen():
...     for i in range(10):
...         yield i
...         
>>> obj=gen()
Run Code Online (Sandbox Code Playgroud)

我可以测量它的大小:

>>> obj.__sizeof__()
24
Run Code Online (Sandbox Code Playgroud)

据说发电机被消耗掉了:

>>> for i in obj:
...     print i
...     
0
1
2
3
4
5
6
7
8
9
>>> obj.__sizeof__()
24
Run Code Online (Sandbox Code Playgroud)

......但obj.__sizeof__()仍然是一样的.

使用字符串它按预期工作:

>>> 'longstring'.__sizeof__()
34
>>> 'str'.__sizeof__()
27
Run Code Online (Sandbox Code Playgroud)

如果有人能够启发我,我将感激不尽.

python generator internals

14
推荐指数
2
解决办法
1万
查看次数

Python的字典哈希数据结构

我正在构建一个非常大的字典,我正在执行许多检查以查看密钥是否在结构中,然后添加它是否唯一或递增计数器(如果它是相同的).

Python使用哈希数据结构来存储字典(不要与加密哈希函数混淆).查找是O(1),但如果哈希表已满,则必须重新进行,这非常昂贵.

我的问题是,我会更好地使用AVL二进制搜索树 还是哈希表足够好?

python algorithm performance data-structures

10
推荐指数
2
解决办法
4924
查看次数

Python如何实现字典?

我想知道python词典如何在后台运行,尤其是动态方面?创建字典时,其初始大小是多少?如果我们用很多元素更新它,我想我们需要扩大哈希表。我想我们需要重新计算散列函数以适应新的更大的散列表的大小,同时又与先前的散列表保持某种逻辑?

如您所见,我不完全了解此结构的内部。

python algorithm implementation dictionary hashtable

1
推荐指数
1
解决办法
112
查看次数