我试图通过iPython的%%timeit机制来确定set.remove是否比list.remove快,这时出现了一个难题.

我可以

In [1]: %%timeit
a_list = list(range(100))
a_list.remove(50)

然后做同样的事情,但用set.然而,这将包括list/set施工的间接费用.有没有办法在每次迭代中重建list/set,但只重建remove方法的时间?

推荐答案

Put your setup code on the same line to create any names or precursor operations you need!
https://ipython.org/ipython-doc/dev/interactive/magics.html#magic-timeit

在单元模式下,第一行中的语句用作设置代码(已执行但未计时),单元体将计时.单元体可以访问在设置代码中创建的任何变量.

%%timeit setup_code
...

遗憾的是,由于无法重新运行安装程序代码,因此只能执行一次运行

%%timeit -n1 x = list(range(100))
x.remove(50)

令人惊讶的是,这不接受timeit预期的字符串,因此结合单次运行的要求,我仍然会使用字符串设置转到timeit,如果需要大量设置或统计上更高的精度,则手动重复它

更多信息请参见@Kelly Bundy's much more precise answer

Python相关问答推荐

如果包含特定值,则筛选Groupby

在numpy数组中寻找楼梯状 struct

Django Table—如果项目是唯一的,则单行

ModuleNotFoundError:Python中没有名为google的模块''

如何提高Pandas DataFrame中随机列 Select 和分配的效率?

对于标准的原始类型注释,从键入`和`从www.example.com `?

如果服务器设置为不侦听创建,则QWebSocket客户端不连接到QWebSocketServer;如果服务器稍后开始侦听,则不连接

如何在Python中实现高效地支持字典和堆操作的缓存?

Python:在cmd中添加参数时的语法

为什么内置的sorted()对于一个包含降序数字的列表来说,如果每个数字连续出现两次,会变慢?

为什么fizzbuzz在两个数字的条件出现在一个数字的条件之后时不起作用?

使代码更快地解决哪个字母代表给定公式中的哪个数字

逐个像素图像处理的性能问题(枕头)

使用百分位数对数据帧单元格的背景进行着色

如何在python中为列表中的每个项目分配来自另一个列表的相等数量的项目

Python:比较日期并批量更新某些字段

聚合数据帧的n个连续行的惯用方式

在python中使用beta.rvs生成矩阵的最快方法

POLARS:从GROUP_BY列表中 Select 值,并从另一列中 Select 值

删除GeoAxes子图中的顶部和右侧脊椎