gpt4 book ai didi

python - 有没有办法将脚本中的答案列表转换为产生的值?

转载 作者:行者123 更新时间:2023-11-28 18:55:09 25 4
gpt4 key购买 nike

我有一个长时间运行的程序,我想保持响应。该算法是递归的,因此有时即使是较长运行调用中的子任务也可能比较短的整个运行更长。我试图让它使用 yield 但最终只得到了在递归列表结构的各个级别中充满生成器的列表(还列出了多级层次结构,记录调用深度)。我终于制作了简单的打印答案版本,但它最终打印了答案。我不能只打印递归调用结果,而且结果需要在打印前进行后处理。

是否有简单的模式来调用顶级函数来产生值,但递归调用来返回答案?我应该在递归调用结果上使用 for 循环还是从递归调用中生成 aswers 的 list()?我应该只输入深度参数并返回深度 > 0 并在深度 0 处屈服吗?

无论如何,有没有一种简单的方法可以让每行输出调用一个答案,从而将这些行返回给主 Python 程序?或者我还应该从模块调用中返回完整列表吗?我可以在 Linux 系统中使用“bg”在单独的解释器中轻松运行 os 调用版本,不是吗?

这个问题是完整的覆盖问题,一个对我的应用程序有用的例子是,例如在没有组合的情况下做同样的事情,只添加数字直到它们超过限制递归地返回精确的总和:

from __future__ import print_function
def subset(seq, mask):
""" binary mask of len(seq) bits, return generator for the sequence """
return (c for ind,c in enumerate(seq) if mask & (1<<ind))

numbers = [1, 5, 3, 9, 4]
print('Numbers: ',numbers)
print('Possible sums',min(numbers),'..',sum(numbers))

for i in range(1,2**len(numbers)):
sub = list(subset(numbers, i))
print(sum(sub),'=',' + '.join(str(s) for s in sub))

print()
target = 11
print ('Finding subsequence for sum = %i' % target)

check = None
for check in (subset(numbers, mask)
for mask in range(1,2**len(numbers))
if sum(subset(numbers, mask))==target):
print (' + '.join(str(s) for s in check), ' = ', target)
if not check:
print('No solutions')

最佳答案

您对您实际尝试做的事情的详细信息有点不了解,但这是我最好的猜测(注意:您需要 Python 2.6):

def do_stuff(num):
children = [ _do_stuff(x + 1) for x in range(num) ]
for child in children:
child.send(None)

count = 0
while children:
child = children.pop(0)
try:
count += child.send(count)
except StopIteration:
continue
children.append(child)

def _do_stuff(num):
to_add = 0
for x in range(num):
from_parent = (yield (to_add + x))
print "child %s got %s" %(num, from_parent)
to_add += from_parent

它将像这样工作:

>>> do_stuff(3)child 1 got 0child 2 got 0child 3 got 1child 2 got 3child 3 got 3child 3 got 9

抱歉,这个例子有点令人困惑——我的大脑现在还没有想出更好的例子。

还有一些注意事项:* children 可以生成另一个生成器,可以将其添加到 children 列表中* 这个实现很慢(从列表头部弹出需要 O(n) 时间)——见 dequeue 模块* 需要 child.send(None) 来“启动”生成器(即执行到第一个 yield)

关于python - 有没有办法将脚本中的答案列表转换为产生的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3897712/

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