我在Python中使用了很多生成器,通常我需要从生成器中获取一个并且只有一个对象,但我不希望它跳过这个对象,只是为了能够查看它(例如,如果它是一个字典,就可以查看它的键)。你知道吗
import random
def get_generator():
for i in range(0, 10):
d = {'id': i, value: random.random()}
yield d
g = get_generator()
fields = g.the_function_im_looking_for().keys()
print "this generator will offer " + str(len(fields)) + " fields in each item. "\
"I know this information but I still can iterate over it"
for v in g:
print g
请不要在回答中解释解决方法(比如测试循环中的第一个元素),我正在寻找一种“干净”的方法来实现这一点。你知道吗
我相信这可以用itertools.tee公司(): http://docs.python.org/3/library/itertools.html#itertools.tee
但是,存储需求可能会变得很大。你知道吗
你知道吗itertools.tee公司()允许从一个迭代器创建两个迭代器。你知道吗
您可以创建一个包装生成器,允许您“窥视”下一个值:
这允许您使用
.peek()
方法查看下一个值;注意:如果没有下一个值可查看,则调用.peek()
可以引发StopIteration
。你知道吗如果不推进发电机,就不可能从发电机中获取元件。发电机就是这样工作的。您可以使用技巧来存储元素,以便稍后再次使用它(您似乎已经知道)。您还可以编写一个类,提供用
peek
方法包装生成器的行为。但是你必须在发电机的外部做这些。当你得到一个元素时,没有任何方法可以使生成器本身不前进。你知道吗相关问题 更多 >
编程相关推荐