python - 可以将计算放在 for 循环的主体中吗?

标签 python performance counter

<分区>

我想确保 d1-d2 不会在第一个示例的每次迭代中重新计算。我怎样才能检查这个?

>>> def f(d1: Counter, d2: Counter):
...     for reason, count in (d1 - d2).items():
...         print(reason, count)
...
>>> def f2(d1: Counter, d2: Counter):
...     diff = (d1 - d2).items()
...     for reason, count in diff:
...         print(reason, count)

有什么建议在可读性和性能方面更像 pythonic 吗?

最佳答案

评论已经说明了没关系。您还询问“如何检查”d1 - d2 没有计算两次,这通过定义一个打印内容的函数非常简单。

def foo():
    print('foo')
    return range(5)

for n in foo():
    pass

这会输出一次 foo,这证明 foo() 被调用/求值恰好一次(而不是 5 次)。

关于python - 可以将计算放在 for 循环的主体中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59931449/

相关文章:

performance - 提高保留每个账户查询最近3条记录的性能

Java 基准测试 - 为什么第二个循环更快?

python - 在Python中对具有相同值的列表和子列表进行排序和分组

javascript - 我有一个基于计数器的 if/else 语句,但由于某种原因,else 不起作用

python - 重命名 Pandas 中各种格式的列标题

python - ImportError : No module named pip.日志--使用pip安装

python - 为 numpy 绑定(bind)列(来自向量)

java - 为什么哈希表会通过加倍来调整大小?

python - music21 如何创建一个 element.lyric 即使在该偏移处没有音符或元素(创建一个不可见的元素?)

JAVA : How to see the difference in output between a synchronized and normal thread counter?