如何解决遍历列表收益
那是我的清单:
[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)
,前两幅是:
要如何在firstCall和secondCall变量中使用'2','5','7',...? 谢谢你
解决方法
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)
,
用于返回3个下一个元素的简单类:
class IterDenominations(object):
def __init__(self,numbers):
self.iterator = iter(numbers)
def next(self):
print([next(self.iterator),next(self.iterator),next(self.iterator)])
测试:
ids = IterDenominations([2,5,7,10,25,30,50,70])
ids.next()
ids.next()
输出:
[2,7]
[10,30]
,
使用yield
编写函数时,调用该函数不会返回该值。它返回一种特殊类型的对象generator
。要打印出generator
的所有值,您将不得不使用for
对其进行循环或将其拉入{ {1}}或list
。
打印代码:
tuple
此外,在函数中调用firstCall = C.iterDenominations()
print(list(firstCall))
secondCall = C.iterDenominations()
print(list(secondCall))
也不是一个好习惯,也不能为您提供所有元素。更加Python化的方式是这样的:
__next__
或者简单地
def iterDenominations(self):
it = iter(self.listDenominations)
yield from it
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。