永发信息网

如何提取python的generator的元素

答案:1  悬赏:20  手机版
解决时间 2021-01-25 22:53
  • 提问者网友:温旧梦泪无声
  • 2021-01-25 18:12
如何提取python的generator的元素
最佳答案
  • 五星知识达人网友:野味小生
  • 2021-01-25 18:53
python中的generator是生成器,可以每次返回一个结果,并且记住上次的位置,非常节约内存。但是不好的地方是一个生成器只能使用一次,一次之后就会销毁。
所以想取特定元素会消耗这个生成器。以下是示例代码。
def gen(n):
    i=0
    while i
        yield i
        i+=1
def getElementbByIndex(index,gen):#取生成器中的第几个元素,从0开始
    r=None
    for i in range(index):
        try:
            r=next(gen)
        except :
            return None
    return r
def getElementsbByIndices(indices,gen):#取生成器中的几个元素,序号存在indices中
    rr=[None for i in indices]#初始化一个结果数组,默认值全为None,结果存在对应的位置上
    m=max(indices)#最大位置
    for i in range(m+1):

        try:
            r=next(gen)
            if i in indices:
                i_index_in_indices=indices.index(i)
                rr[i_index_in_indices]=r#将结果的对应位置变成生成器的内容,当位置出现重复时,此方法不适合
        except StopIteration:
            return rr
    return rr
g1=gen(10)
print(getElementbByIndex(3,g1))
g2=gen(20)
print(getElementsbByIndices([1,2,5,12,7],g2))
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯