python-3.x buildin itertools.cycle函数在While True循环中不返回下一个元素

j13ufse2  于 2023-05-08  发布在  Python
关注(0)|答案(1)|浏览(116)

我有一个函数,它接受一个字典值或一个字符串,创建一个双端队列,并按该值的索引对其进行排序,然后返回一个循环对象。另一个函数接受dict并将其传输到第一个函数对象中,而在while True循环中创建另一个dict,该dict具有“Position”键,并且值必须是创建的循环对象中的下一个元素,并返回该dict,但每次都必须是下一个元素循环对象。
初始字典data = {'position': 'D'}
第一个函数创建并返回一个cycle()对象。

def cycle_(deq_):
    deq = collections.deque(['D', 'E', 'L'])
    idx = deq.index(deq_)
    deq.rotate(-idx)
    cycle = itertools.cycle(deq)
    return cycle

第二个函数,创建最终的dict,每次都必须修改并返回它。

def modification(data):
    dump = cycle_deq(data['position'])
    
    while True:
        data_2 = {
            'position': next(dump)
        }
        return data_2
kmpatx3s

kmpatx3s1#

modification函数应该使用yield而不是return。在当前形式中,while-loop只能运行一次,然后函数以return终止。

相关问题