【发布时间】:2016-05-27 03:15:33
【问题描述】:
我有这个生成器,它返回一个数字列表。
li=tile_generator(im)
我需要找到列表“li”的长度,因为我需要检查阈值。
我用length = sum(1 for i in li)。它返回列表的长度,但生成器中的元素已用尽,因为它是生成器。
我需要在不耗尽生成器中的元素的情况下返回长度。
【问题讨论】:
我有这个生成器,它返回一个数字列表。
li=tile_generator(im)
我需要找到列表“li”的长度,因为我需要检查阈值。
我用length = sum(1 for i in li)。它返回列表的长度,但生成器中的元素已用尽,因为它是生成器。
我需要在不耗尽生成器中的元素的情况下返回长度。
【问题讨论】:
你不能那样做。不过,你可以先把它变成一个列表:
li = list(tile_generator(im))
length = len(li)
【讨论】:
enumerate()。例如,您可以说for i, item in enumerate(tile_generator(im)): 并将您想要的任何代码放在那里。完成for 循环后,i 将与生成器的长度减一相同。但是,如果您需要 before 使用生成器的长度,那么我的回答是唯一的方法。