Python生成器非常有用。与返回列表的函数相比,它们具有优势。但是,您可以len(list_returning_function())
。有办法len(generator_function())
吗?
更新:
当然len(list(generator_function()))
可以了.....
我正在尝试使用在新生成的生成器中创建的生成器。作为新生成器中计算的一部分,它需要知道旧生成器的长度。但是,我想将它们和生成器的属性保持在一起,特别是-
不要将整个列表保存在内存中,因为它可能 很 长。
更新2:
假设生成器甚至从第一步就 知道 它的目标长度。另外,没有理由维护len()
语法。示例-
如果Python中的函数是对象,是否不能将长度分配给该对象的变量,新生成器可以访问该变量?
生成器没有长度,它们毕竟不是集合。
生成器是 具有内部状态 (和精美语法)的 函数
。您可以反复调用它们以获得值序列,因此可以循环使用它们。但是它们不包含任何元素,因此,要求生成器的长度就像要求函数的长度一样。
如果Python中的函数是对象,是否不能将长度分配给该对象的变量,新生成器可以访问该变量?
函数是对象,但是您不能为其分配新的属性。原因可能是使这样的基本对象尽可能高效。
但是,您可以简单地(generator, length)
从函数中返回对或将生成器包装在一个简单的对象中,如下所示:
class GeneratorLen(object):
def __init__(self, gen, length):
self.gen = gen
self.length = length
def __len__(self):
return self.length
def __iter__(self):
return self.gen
g = some_generator()
h = GeneratorLen(g, 1)
print len(h), list(h)
Len函数返回给定输入字符串的长度,包括空格。 语法 (Syntax) Len(String) 例子 (Example) 添加按钮并添加以下功能。 Private Sub Constant_demo_Click() Dim var1 as Variant Dim var2 as Variant var1 ="Microsoft VBScript" msgbox("Leng
该方法返回特定字符串的长度 语法 (Syntax) len(str) 参数 (Parameters) str - 这是需要确定字符数的字符串。 返回值 (Return Value) 返回值是字符串中的字符数。 例如 (For example) -module(helloworld). -import(string,[len/1]). -export([start/0]). start()
描述 (Description) 方法len()给出了字典的总长度。 这将等于字典中的项目数。 语法 (Syntax) 以下是len()方法的语法 - len(dict) 参数 (Parameters) dict - 这是字典,需要计算其长度。 返回值 (Return Value) 此方法返回长度。 例子 (Example) 以下示例显示len()方法的用法。 #!/usr/bin/python
描述 (Description) 方法len()返回元组中元素的数量。 语法 (Syntax) 以下是len()方法的语法 - len(tuple) 参数 (Parameters) tuple - 这是一个元组,要计算的元素数量。 返回值 (Return Value) 此方法返回元组中的元素数。 例子 (Example) 以下示例显示len()方法的用法。 #!/usr/bin/python t
描述 (Description) 方法len()返回list的元素数。 语法 (Syntax) 以下是len()方法的语法 - len(list) 参数 (Parameters) list - 这是要计算的元素数量的列表。 返回值 (Return Value) 此方法返回列表中的元素数。 例子 (Example) 以下示例显示len()方法的用法。 #!/usr/bin/python list1
描述 (Description) 方法len()返回字符串的长度。 语法 (Syntax) 以下是len()方法的语法 - len( str ) 参数 (Parameters) NA 返回值 (Return Value) 此方法返回字符串的长度。 例子 (Example) 以下示例显示len()方法的用法。 #!/usr/bin/python str = "this is string exam