加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – Python等效于vector :: reserve()

发布时间:2020-12-16 03:32:47 所属栏目:百科 来源:网络整理
导读:我正在寻找C vector :: reserve()的 Python等价物.我不知道列表提前有多大,但我知道它会相当大,我希望避免尽可能多的限制,因为列表是在一个内部循环中增长的. 到目前为止,我提出的唯一解决方案与vector :: reserve()习惯用法相比非常麻烦.该解决方案是使用[
我正在寻找C vector :: reserve()的 Python等价物.我不知道列表提前有多大,但我知道它会相当大,我希望避免尽可能多的限制,因为列表是在一个内部循环中增长的.

到目前为止,我提出的唯一解决方案与vector :: reserve()习惯用法相比非常麻烦.该解决方案是使用[无] * K预先创建列表,在单独的计数器中跟踪列表的大小,根据需要将项目附加或设置到列表中,然后在完全构造后复制列表的一部分.还有其他选择吗?

解决方法

与std :: vector类似,CPython的列表已经预分配了比所需更多的元素,然后以给出O(1)摊销附加的方式增加分配的空间.因此,我将把它留在那,直到我通过剖析证明这确实是一个瓶颈.

编辑:您在评论中提到您已经完成了分析.在这种情况下,预分配[None] * n可能是一个明智的事情,试图看看它是否真的是重复的重新分配是瓶颈.

如果你的数组是数字,我建议你看看NumPy.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读