相关疑难解决方法(0)

为什么[]比list()更快?

我最近比较了处理速度[]和,list()并且惊讶地发现它的[]运行速度比它三倍list().我跑了相同的测试与{}dict(),结果几乎相同:[]{}两个花了大约0.128sec /百万次,而list()dict()大约花费每个0.428sec /万次.

为什么是这样?不要[]{}(可能()'',太)立即传回文字的一些空股票的份,而其明确命名同行(list(),dict(),tuple(),str())完全去创建一个对象,他们是否真的有元素?

我不知道这两种方法有何不同,但我很想知道.我无法在文档中或在SO上找到答案,搜索空括号结果比我预期的问题更多.

我拨打了我的时序结果timeit.timeit("[]")timeit.timeit("list()"),和timeit.timeit("{}")timeit.timeit("dict()"),分别比较列表和字典.我正在运行Python 2.7.9.

我最近发现的" 为什么是,如果真慢于如果为1? "来比较的性能if Trueif 1,似乎触及了类似的文字,对全局的情况; 也许值得考虑一下.

python performance list instantiation literals

679
推荐指数
5
解决办法
7万
查看次数

为什么有时用{}替换set()?

在PyCharm中,当我写道:

return set([(sy + ady, sx + adx)])
Run Code Online (Sandbox Code Playgroud)

它说"函数调用可以用set literal替换",所以它替换为:

return {(sy + ady, sx + adx)}
Run Code Online (Sandbox Code Playgroud)

这是为什么?set()Python中的A 与字典不一样{}

如果它想要优化它,为什么这更有效?

python set

54
推荐指数
3
解决办法
2万
查看次数

使用set()或{}创建集合的差异

这种差异使我感到困惑:

>>> s = "()())()"
>>> print set(s)

set([')', '('])

>>> print {s}

set(['()())()'])
Run Code Online (Sandbox Code Playgroud)

为什么?

python

6
推荐指数
3
解决办法
243
查看次数

为什么在 python 中用 `{*()}` 初始化一个集合比 `set()` 更快?

我有兴趣找到在 Python 中初始化空集的最快方法(我使用的是 3.8)。{}您不能像创建 那样实例化空集dict,因此通常建议使用set()构造函数。前几天我注意到还有另一种方法来实例化空集:您可以将空元组解压(){...}集合的语法中,如下所示:{*()}timeit使用in 中的模块对此进行计时ipython会得到以下结果:

\n
%timeit {*()}\n67.7 ns \xc2\xb1 1.68 ns per loop (mean \xc2\xb1 std. dev. of 7 runs, 10000000 loops each)\n\n%timeit set()\n84.5 ns \xc2\xb1 2.57 ns per loop (mean \xc2\xb1 std. dev. of 7 runs, 10000000 loops each)\n
Run Code Online (Sandbox Code Playgroud)\n

我发现这很奇怪 -set()相对于{*()}. 过去也曾对例如[]vs.list(){}vs.进行过相同的观察dict()

\n
%timeit []\n17.8 ns \xc2\xb1 0.791 …
Run Code Online (Sandbox Code Playgroud)

python benchmarking set python-3.x python-internals

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

为什么`{*l}`比`set(l)`更快 - python集(不仅仅适用于所有序列的集合)

所以这是我的时间:

>>> import timeit
>>> timeit.timeit(lambda: set(l))
0.7210583936611334
>>> timeit.timeit(lambda: {*l})
0.5386332845236943
Run Code Online (Sandbox Code Playgroud)

为什么这样,我的意见是平等的,但事实并非如此.

因此,从这个例子中拆包很快,对吧?

python timing set unpack sequence

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