gpt4 book ai didi

python - 使用Python生成器的直方图问题?

转载 作者:行者123 更新时间:2023-12-01 00:16:19 25 4
gpt4 key购买 nike

我是生成器和协程的新手。我试图使用生成器模拟常见的直方图问题(给定一个列表,返回该列表中每个元素的出现次数)。

def genFunc():
dct = {}
while True:
num = yield
if num not in dct.keys():
dct[num]=1
else:
dct[num]+=1
print dct


g = genFunc()
next(g)

for each in [1,1,1,2]:
print g.send(each)

通过上面的代码,我可以在每个阶段打印出字典“dct”的状态。如何将其返回到调用函数?如果我在 while block 之外使用 return,则会收到错误 - 无法将 return 与 Yield 一起使用。

据我了解,生成器在yield语句中接收send中传递的值。在这种情况下,理想情况下我想传递一个数字/整数并返回字典的当前状态。

最佳答案

yield“返回”数据。您使用它从调用者接收数据,但它也可以用于发送数据:

def genFunc():
dct = {}
while True:
num = yield dct # I'm yielding the dictionary
if num not in dct.keys():
dct[num] = 1

else:
dct[num] += 1


g = genFunc()
next(g)

for each in [1, 1, 1, 2]:
print g.send(each)

{1: 1}
{1: 2}
{1: 3}
{1: 3, 2: 1}

send 返回生成的内容。

关于python - 使用Python生成器的直方图问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59314071/

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