gpt4 book ai didi

python - 使用生成器中上一步的信息?

转载 作者:行者123 更新时间:2023-11-30 23:27:39 25 4
gpt4 key购买 nike

我有一个试图模仿实时的生成器。该生成器确保用户无法访问 future ,只能访问当前时间。

为了简化我的情况,我使用这个生成器

def generator(n):
for x in range(n):
yield [[x],[x+3]]

如果运行n = 5,生成器返回:

[[0], [3]]
[[1], [4]]
[[2], [5]]
[[3], [6]]
[[4], [7]]

我希望能够将每个生成器迭代的元素与前一个生成器迭代的元素组合起来,以计算内部列表的 sum()

案例1:

sum([0]), sum([3])

案例2:

sum([0,1]), sum([3,4])

案例3:

sum([0,1,2]), sum([3,4,5])

...

案例最后

sum([0,1,2,3,4]), sum([3,4,5,6,7])

我不明白如何通过使用来实现这一点:

for x in generator(5):
do sum operation

我将在 for 循环中使用的值将在下一次迭代中消失。

请不要关注数字和结果,而主要关注可能的解决方案背后的逻辑和算法。在这种情况下,对我来说,重要的是能够保留不允许访问 future 数据的情况,只能使用过去的数据进行计算,但是当 for 时,我考虑的过去的数据已经消失了。迭代结束!

有什么解决办法吗?有建议吗?

提前致谢!

最佳答案

l1, l2 = [], []
for x1, x2 in generator(5):
l1.extend(x1)
l2.extend(x2)
print sum(l1), sum(l2)

看起来非常简单。生成器不会强制你忘记它给你的东西。如果您想要执行的操作是像 sum 这样简单的操作,您甚至不需要保留所有旧数据,只需保留其总和即可。

sum1 = sum2 = 0
for x1, x2 in generator(5)
sum1 += x1[0]
sum2 += x2[0]

如果您需要的列表数量是动态的,则很容易处理:

lists = [[] for _ in xrange(numberoflists)]
for subtuple in generator(5):
for element, sublist in zip(subtuple, lists):
sublist.extend(element)
do_whatever_with(map(sum, lists))

关于python - 使用生成器中上一步的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21944880/

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