列表理解中的函数 - 是否多次评估[重复]

2023-12-20

哪一个是在 python 中进行列表理解的更好方法(就计算时间和 CPU 周期而言)。 在示例 (1) 中,值 f(r) 是在每次迭代中计算还是计算一次并缓存?

  1. y = [x*f(r) for x in xlist]

  2. c = f(r)

    y = [x*c for x in xlist]

where

def f(r):
    ... some arbitrary function ...

它对每次迭代进行评估。看这个:

>>> def f():
...     print("func")
... 
>>> [f() for i in range(4)]
func
func
func
func
[None, None, None, None]

正如您所说,如果 f() 没有副作用,则将返回值存储在变量上并使用该变量是更快的解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

列表理解中的函数 - 是否多次评估[重复] 的相关文章

随机推荐

  • Pandas 对行值进行排序

    我有一个像这样的熊猫数据框 Col1 Col2 Col3 1 1092 203 802 是否可以对这个数据框进行排序并得到这样的结果 Col1 Col3 Col2 1 1092 802 203 I tried sort values但它不起
  • ExecutorService 按顺序执行任务,但从池中获取线程

    我正在尝试构建一个实现ExecutorService 我们称之为SequentialPooledExecutor 具有以下性质 的所有实例SequentialPooledExecutor共享同一个线程池 调用同一个实例SequentialP
  • 如何对 Bundle 中的 javascript 文件进行版本控制?

    我想将我的 JS 脚本包含在Bundle并且同时version它们以避免浏览器缓存 如果这些脚本已更改 有没有 native 方式与ASP NET MVC 5来完成这个 我找到了一个名为的图书馆Cassette http getcasset
  • 如何使用动态行跨度显示数据库中的数据

    我是 php 编程新手 在使用 php 和 html 显示 mysql 数据库中的数据时遇到一些问题 这是我的桌子 location id location location component id comopnent id locati
  • C 多类型函数

    我想用 C 编写一些函数 但它们必须适用于所有数字类型 int float double 什么是好的做法 在 void 上使用指针 当然还有指向函数的指针 或者为每种类型编写不同的函数 例如 float func float a float
  • pyenv 在执行所述模块时在终端中打印模块

    我已经转向使用pyenv运行 python 时 但问题是当我执行一个模块并且该模块导入其他模块时pyenv经常会打印出一大堆对我来说是胡言乱语的内容 例如 alias py37 pyenv local 3 7 3 python Admins
  • Symfony2 __toString() 错误

    我在将实体保存回给我时遇到此错误 Catchable Fatal Error Method My BusinessBundle Entity Type toString must return a string value in var w
  • 使用rest api在Google Drive中创建新文件夹

    仅当谷歌驱动器不存在时 如何使用 python 在谷歌驱动器中创建新文件夹 我对这个 google API 和 python 完全陌生 我的帐户有一个访问令牌 我想使用它创建文件夹 创建文件夹 import json import requ
  • 当 BOM(字节顺序标记)丢失时,如何才能最好地猜测编码?

    我的程序必须读取使用各种编码的文件 它们可能是 ANSI UTF 8 或 UTF 16 大端或小端 当 BOM 字节顺序标记 存在时 我没有问题 我知道该文件是 UTF 8 还是 UTF 16 BE 或 LE 我想假设当没有 BOM 时该文
  • 英特尔 Fortran 95 编译器是否允许模块数组具有非常量大小?

    我已经下载了 Fortran 90 95 自适应网格细化库 Paramesh http www physics drexel edu olson paramesh doc Users manual amr html 现在我正在尝试编译一个附
  • 如何停止水平滚动?

    我用 html 和 javascript 编写了一个文件 垂直滚动应该存在 但我想停止水平滚动 我怎样才能做到这一点 萨弗拉兹有已经提到过 https stackoverflow com questions 2987261 how to s
  • 如何为 BN_generate_prime 播种 PRNG

    我一直无法找到关于在 openssl bn h 中使用 BN generate prime 生成素数的答案 另外 我如何播种该函数使用的 PRNG 单独的问题但与我的代码相关 我正在编写一个程序来生成 RSA 密钥对 如何检查高位是否设置为
  • Angular UI bootstrap - 在 typeahead-no-results 上显示下拉菜单

    尝试在预输入没有结果时获取下拉菜单 但是下拉菜单不显示 看法 div class dropdown div class form group div div
  • 如何在 ggplot2 / Rmarkdown 中跨选项卡进行分面?

    我知道facet wrap and facet grid用于刻面 对于需要更多空间的更详细的图形 能够轻松地进行分面可能会很有用Rmarkdown 选项卡 https stackoverflow com a 38146093 除了将图形的代
  • 为什么 O(1) != O(log(n)) ?对于 n=[整数,长整型,...]

    例如 假设 n Integer MAX VALUE 或 2 123 那么 O log n 32 和 123 就是一个小整数 不是 O 1 吗 有什么不同 我认为 原因是 O 1 是常数 但 O log n 不是 还有其他想法吗 If n上面
  • 使用 Gradle 将 .ebextensions 添加到 Spring Boot Jar 的简洁方法

    是否有一种干净的方法可以将其他根文件夹添加到使用默认 bootRepackage jar 生成的 Spring Boot Jar 文件中 就我而言 我需要 AWS beanstalk 的 ebextenions 文件夹 我知道我可以破解它
  • 尝试对值进行分组?

    我有一些这样的数据 1 2 3 4 5 9 2 6 3 7 我正在寻找这样的输出 组 ID 和该组的成员 1 1 2 6 2 3 4 7 3 5 9 第一行 因为 1 连接 到 2 而 2 连接到 6 第二行 因为 3 连接到 4 3 连接
  • Java使Proxy Socket多线程化

    我已经构建了一个 java 代理 它可以工作 但只允许 1 个客户端 我知道我需要进行多线程处理 这就是我这样做的原因 因此它会打开新线程 但由于某种原因我无法让它工作 这是我的代理类 public class Proxy private
  • 升级到 Xcode 5.0 后,Xcode 无法使用所选设备运行

    我今天升级到了xcode 5 0 然后我按下播放键在 iOS 模拟器中运行我的项目 这最初是有效的 然后我决定运行分析器 当我这样做时 我收到消息 Xcode cannot run using the selected device Cho
  • 列表理解中的函数 - 是否多次评估[重复]

    这个问题在这里已经有答案了 哪一个是在 python 中进行列表理解的更好方法 就计算时间和 CPU 周期而言 在示例 1 中 值 f r 是在每次迭代中计算还是计算一次并缓存 y x f r for x in xlist c f r y