繁体   English   中英

在不改变逻辑的情况下,可以容易地使python代码片段运行起来更快的例子有哪些?

What are some examples python snippets that could be easily made to run faster, without altering the logic?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

因此,昨天我学到了以下困难的方法:

s = []
for i in range(n):
    s.append('a')
"".join(s)

在速度方面(尽管两者都具有相同的“时间复杂度”)与以下内容有很大不同

'a' * n 

原因几乎是不言而喻的:前者(相对)以太多的程序集调用方式进行调用。

>>> import dis
>>> def f(c,n):
...     return c*n
... 
>>> def f2(c,n):
...     l = []
...     for i in range(n):
...             l.append(c)
... 
>>> dis.dis(f)
  2           0 LOAD_FAST                0 (c)
              2 LOAD_FAST                1 (n)
              4 BINARY_MULTIPLY
              6 RETURN_VALUE
>>> dis.dis(f2)
  2           0 BUILD_LIST               0
              2 STORE_FAST               2 (l)

  3           4 SETUP_LOOP              26 (to 32)
              6 LOAD_GLOBAL              0 (range)
              8 LOAD_FAST                1 (n)
             10 CALL_FUNCTION            1
             12 GET_ITER
        >>   14 FOR_ITER                14 (to 30)
             16 STORE_FAST               3 (i)

  4          18 LOAD_FAST                2 (l)
             20 LOAD_METHOD              1 (append)
             22 LOAD_FAST                0 (c)
             24 CALL_METHOD              1
             26 POP_TOP
             28 JUMP_ABSOLUTE           14
        >>   30 POP_BLOCK
        >>   32 LOAD_CONST               0 (None)
             34 RETURN_VALUE

我的问题是:这类代码还有哪些其他示例,其中两个具有相同时间复杂度的代码片段以非常不同的速度运行?

(我很抱歉并了解这是否有点题外话。只是我现在不知道上面的琐事而丢掉了工作面试。我无法承受这种情况的再次发生,这就是为什么我发表这篇文章,部分出于沮丧)

问题暂未有回复.您可以查看右边的相关问题.
2 有没有更快的方法可以在不改变最终目标的情况下通过这段代码实现相同的目标?

我正在尝试优化 PyPSA 中的一个函数,该函数在分析后花费的时间最多。 但它只是在 Python 中使用 Pandas 平台。 而且不需要很多关于 PyPSA 的背景信息,我相信我对 Pandas 不是很了解。 我试过使用这里的地方: 但我最终改变了整个结果,因为 where 在它是 Fa ...

3 如何在不改变其值的情况下运行属性集?

我试图使用属性来启用或禁用属性的值更改时按钮。 例如: 现在这个工作正常,除了在启动时。 在调用set之前,始终会启用该按钮。 我试过这个: 它似乎工作正常。 但这是正确的方法吗? ...

6 微服务 - 在不改变代码的情况下改变服务意味着什么?

我试图理解“在不更改代码的情况下更改数据库”。 目前正在使用springboot,java,thymeleaf和云代工厂处理微服务。 我有一个spring boot应用程序,并使用云代工厂将数据库作为服务附加。 我的问题是我看到微服务的目的是允许在不改变代码的情况下轻松地改变服务。 ...

8 如何在不改变表单背后的代码的情况下每秒动态更新表单中的子控件?

我在一个表格中有一个儿童控制器,显示了WiFi信号的强度。因为这个应用程序将在平板电脑上使用在车​​辆周围的移动车辆上。 我想在我的WPF应用程序的每个形式中都有这个控件,我希望它每秒刷新一次,而不必更改它所在的每个表单后面的代码。 通过调用signalQualityView.Refre ...

9 在不改变单词的情况下替换python中的unigrams和n-grams

这看起来应该很简单,但事实并非如此,我想在python中实现字符串替换,要替换的字符串可以是unigrams或n-grams,但我不想替换单词中包含的字符串。 例如: 返回: 但我不希望这种情况发生。 在空格上拆分字符串适用于单个单词(unigrams),但我也想替换 n-grams ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM