首页 > 解决方案 > 遍历列表(产量)

问题描述

我正在尝试创建一个迭代列表并返回下一个元素的方法。

那是我的清单:

[2、5、7、10、25、30、50、70]

这就是我正在研究的方法:

    def iterDenominations(self):
        it = iter(self.listDenominations)
        yield it.__next__()

当我调用方法并打印结果时

firstCall = C.iterDenominations()
print(firstCall)
secondCall = C.iterDenominations()
print(secondCall)

,前两个打印是:

<0x000001D413F6DC10 处的生成器对象 Currency.iterDenominations>

<generator object Currency.iterDenominations at 0x000001D4140E2EB0>

我应该怎么做才能在 firstCall 和 secondCall 变量中包含 '2'、'5'、'7'、...?谢谢

标签: pythonlistiterationyield

解决方案


iterable = iter(self.listDenominations)
for item in iterable:
    yield item

或者

yield from iterable

调用生成器函数将创建一个生成器,它不会从生成器返回值。因此,您创建生成器,然后调用next它(或迭代它)

denominations = c.iterDenominations()  # make the generator
first_call = next(denominations)
second_call = next(denomination)
rest = list(denominations)
print(first_call, second_call, rest)

推荐阅读