已关闭。此问题需要details or clarity。它目前不接受答案。
**想要改进这个问题吗?**添加细节,并在editing this post之前澄清问题。
一年前就关闭了。
这篇文章是在2小时前编辑并提交审阅的。
Improve this question
我正在尝试创建一个遍历列表并返回下一个元素的方法。
这就是列表命名:
[2、5、7、10、25、30、50、70]
这就是我正在研究的方法:
class SomeClass
def iterDenominations(self):
it = iter(self.listDenominations)
yield it.__next__()
# much later in the code
C = SomeClass()
当我调用该方法并打印结果时
firstCall = C.iterDenominations()
print(firstCall)
secondCall = C.iterDenominations()
print(secondCall)
,前两个印刷品是:
<0x000001D413F6DC10处的生成器对象Currency.iterDenomations>
<0x000001D4140E2EB0处的生成器对象Currency.iterDenomations>
这些都不是我所期待的结果。我正在寻找从list Denomings顺序返回的元素,即
第一次呼叫后:[2]
秒呼叫后:[5]
第三次呼叫之后(尚未成文):[7]等。
3条答案
按热度按时间ibps3vxo1#
或
调用生成器函数将创建一个生成器,它不会从生成器返回值。因此,您创建了生成器,然后对其调用
next
(或迭代)m0rkklqb2#
用于返回3个Next元素的简单类:
测试:
产出:
6kkfgxo03#
当您使用
yield
编写函数时,调用它不会返回该值。它返回一种名为e1d1d1的特殊类型的对象。要打印出generator
的所有值,您必须使用Offor
对其进行循环,或者将其拖入list
或tuple
。打印代码:
此外,在您的函数中调用
__next__
也不是一种好的做法,它也不会给您提供所有元素。更典型的做法是这样做:或者干脆