gpt4 book ai didi

python:来自函数的迭代器

转载 作者:太空狗 更新时间:2023-10-29 17:40:01 26 4
gpt4 key购买 nike

什么是 idiomatic从函数创建无限迭代器的方法?例如

from itertools import islice
import random
rand_characters = to_iterator( random.randint(0,256) )
print ' '.join( islice( rand_characters, 100))

会产生100个随机数

最佳答案

您想要一个不断产生值直到您停止请求新值的迭代器吗?简单地使用

it = iter(function, sentinel)

它为每个迭代步骤调用 function(),直到结果 == sentinel

因此,在您的情况下,选择一个您想要的函数永远不会返回的哨兵,例如 None

rand_iter = lambda start, end: iter(random.randint(start, end), None)
rand_bytes = rand_iter(0, 256)

如果你想监控机器上的某些状态,你可以这样做

iter_mystate = iter(getstate, None)

依次为每个迭代步骤无限调用 getstate()

但要注意返回 None 作为有效值的函数!在这种情况下,您应该选择一个保证唯一的哨兵,也许是为这个工作创建的对象:

iter_mystate = iter(getstate, object())

关于python:来自函数的迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13646918/

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