gpt4 book ai didi

python - 写一个生成器还是返回一个生成器?

转载 作者:太空狗 更新时间:2023-10-29 19:28:39 24 4
gpt4 key购买 nike

在一个容器类中,当我想遍历它的项目(或者它的项目的转换,或者它的项目的一个子集)时,我可以一个生成器(比如f ) 或返回一个生成器(如g):

class SomeContainer:
def __init__(self):
self.data = [1, 'two', 3, 'four']

def f(self):
for e in self.data: yield e + e

def g(self):
return (e + e for e in self.data)

sc = SomeContainer()
for x in sc.f(): print(x)
for x in sc.g(): print(x)

我不需要通过send 将信息传递给生成器。

显然这两种方式表现相同(在表面上)。

  1. 哪种方法更可取,为什么?

  2. 哪种方法产生的更少开销还是有其他我没有发现的优势?

最佳答案

生成器理解(例如在 g() 中)会稍微快一些。

如果您的逻辑变得比您提供的简单示例更复杂,则显式循环(例如在 f() 中)可能会更具可读性。

除此之外,我想不出任何实质性差异。

但请记住他们说的话:

Premature optimization is the root of all evil!

关于python - 写一个生成器还是返回一个生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20591544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com