gpt4 book ai didi

python - 从 Python 中的生成器中删除重复代码

转载 作者:行者123 更新时间:2023-11-28 18:32:49 24 4
gpt4 key购买 nike

def generator():
for i in range(10):
yield "foo" + "baz"

for i in range(10):
yield "bar" + "baz"

我想把代码写成这样:

def baz(s):
for i in range(10):
yield s + "baz"

def generator():
baz("foo")
baz("bar")

但是,此代码的行为有所不同。

如何去除生成器中的重复代码,包括 yield

附言我找到了 yield from。这正是我想要的,但我的项目是在 Python 2.7 中。

最佳答案

您可以重新编码以使用 itertools,如下所示:

from itertools import repeat, chain

def generator():
for i in chain(repeat('foobaz', 10), repeat('barbaz', 10)):
yield i

for x in generator():
print x

给你:

foobaz
foobaz
foobaz
foobaz
foobaz
foobaz
foobaz
foobaz
foobaz
foobaz
barbaz
barbaz
barbaz
barbaz
barbaz
barbaz
barbaz
barbaz
barbaz
barbaz

或者作为一个简单的列表:

from itertools import repeat, chain

def generator():
return list(chain(repeat('foobaz', 10), repeat('barbaz', 10)))

print generator()

给予:

['foobaz', 'foobaz', 'foobaz', 'foobaz', 'foobaz', 'foobaz', 'foobaz', 'foobaz', 'foobaz', 'foobaz', 'barbaz', 'barbaz', 'barbaz', 'barbaz', 'barbaz', 'barbaz', 'barbaz', 'barbaz', 'barbaz', 'barbaz']

关于python - 从 Python 中的生成器中删除重复代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35285673/

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