gpt4 book ai didi

python - 如何在 Python 中获取生成器的新输入而不创建新的生成器

转载 作者:行者123 更新时间:2023-12-01 07:56:17 25 4
gpt4 key购买 nike

我尝试编写代码来获取列表并使用yield 语句生成所有这些转换。

问题是当我想使用发送函数向生成器获取新输入时,我会继续获取旧输入。

def permute(items):
permutations = [x for x in itertools.permutations(items)]
permutations.sort()
for n in permutations:
yield (n)

g = permute(['b','a','c'])
print(next(g)) #('a', 'b', 'c')
print(next(g)) #('a', 'c', 'b')
g.send(['e','q','c'])
print(next(g)) #('b', 'c', 'a') need to be ('c', 'e', 'q')

如何清空排列列表并重复排序排列列表步骤而不创建新的生成器?

最佳答案

为什么不直接创建一个 permute 类型的新对象并使用它

import itertools
def permute(items):
permutations = [x for x in itertools.permutations(items)]
permutations.sort()
for n in permutations:
yield (n)

g = permute(['b','a','c'])
print(next(g)) #('a', 'b', 'c')
print(next(g)) #('a', 'c', 'b')

g = permute(['e','q','c'])
print(next(g)) #('b', 'c', 'a') need to be ('c', 'e', 'q')
#I get ('c', 'e', 'q')

关于python - 如何在 Python 中获取生成器的新输入而不创建新的生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55966064/

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