我有以下代码
>>> x = ['a','b','c','d','e']
>>> def test_yield(lst):
... for el in lst:
... yield el
...
>>> var = test_yield(x)
>>> var.next()
'a'
>>> var.next()
'b'
>>> var.next()
'c'
>>> var.next()
'd'
>>> var.next()
'e'
如何从生成器中知道可迭代的长度(在本例中为列表的长度)。 在我的实际案例中,我没有确切的清单。我有发电机的那个。简单地说,我想知道在我的第二个var.next()之后var中的iterables的数量。
答案 0 :(得分:3)
你做不到。迭代器可以是无限的。
def test_yield():
count = 1
while True:
count += 1
yield count
答案 1 :(得分:2)
如果您知道您的迭代器不是无限的(请参阅@ unutbu的答案),您可以先将结果放入列表中,然后获取长度:
stuff = list(test_yield(x))
print(len(stuff))