社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

Frank Yellin

Frank Yellin 最近创建的主题
Frank Yellin 最近回复了
3 年前
回复了 Frank Yellin 创建的主题 » 分析Python的Dict insert运行时间有什么错?

当他们说 O(1) ,意思是“摊余成本”。有些手术可能更昂贵,但手术的平均成本仍然很低 O(1) .


我最初的答案如下。我意识到我的证明可以大大简化。

假设当前数组大小为 P = 2^n .一些元素 k 已从上一个数组复制到此数组中。每次复制时,我们复制的元素数量是上一次复制时的两倍。所以移动的元素总数是 k + k/2 + k/4 + ... 这比 2k 这比 2P .

如果我们表演过 N 操作时,数组的大小小于 2N ,我们的表现还不到 4N 副本。因此,副本数量为 O(N) .QED

请注意,我从未在证明中使用过2/3。我们唯一需要的是,每个副本的大小是前一个副本的两倍,并且数组大小与操作数成正比。


这是我最初的答案。

让我们假设在数组已满3/4时复制。这个想法还是一样的,但我们可以用整数。我们从大小为8到16的数组中复制6个元素。我们将12个元素复制到大小为32的数组中。我们将24个元素复制到大小为64的数组中。

[我在用 ^ 指指数,而非排他性或

所以我们最终复制了 6(1 + 2 + 4 + ... 2^n) 元素组成一个数组 2^(n + 3) .但第一个数字小于 6 * 2^(n + 1) 这就是 1.5 * 2^(n * 3) 。因此,无论我们当前使用的是什么大小的数组,到达该数组的复制总量都不到该数组大小的1.5倍。

3 年前
回复了 Frank Yellin 创建的主题 » Python:程序每次运行时都会输出不同的值

我不知道这是否是你的问题的原因,但你的代码有六次调用 np.empty .我看不到这些阵列以后会进行任何初始化。

NP空的 导致数组未初始化,内存将包含随机垃圾。试着用 np.zeros 看看你是否能得到更好的结果。

3 年前
回复了 Frank Yellin 创建的主题 » exec()赋值后的Python类型暗示

如果你打字

cast(type, value1)

那么结果将与 value ,但您已经告诉类型检查器,它的类型就是指定的类型,并且它只需要相信您。

从文件中:

typing.cast(typ, val)

将值强制转换为类型。

这将返回不变的值。向类型检查器发送此信号 返回值具有指定的类型,但在运行时 故意不检查任何东西(我们希望它尽可能快 可能)。