Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 理解此列表理解_Python_Python 3.x_List Comprehension - Fatal编程技术网

Python 理解此列表理解

Python 理解此列表理解,python,python-3.x,list-comprehension,Python,Python 3.x,List Comprehension,我应该如何解释以下代码 return (e2 for e1 in edits1(word) for e2 in edits1(e1)) edits1函数返回一个单词列表 将e1传递到edits1(word),获取结果,对于此结果列表中的每个元素,将其传递到edits1(),然后返回结果 这是正确的吗?有人能用英语分解代码吗?如果是,则返回[edits1(word)中e1的e2表示edits1(e1)中e2的e2)](注意方括号),这将是一个列表理解,相当于 def your_function(

我应该如何解释以下代码

return (e2 for e1 in edits1(word) for e2 in edits1(e1))
edits1函数返回一个单词列表

将e1传递到edits1(word),获取结果,对于此结果列表中的每个元素,将其传递到edits1(),然后返回结果


这是正确的吗?有人能用英语分解代码吗?

如果是,则返回[edits1(word)中e1的e2表示edits1(e1)中e2的e2)](注意方括号),这将是一个列表理解,相当于

def your_function():
    ....
    ....
    result = []
    for e1 in edits1(word):
        for e2 in edits1(e1):
            result.append(e2)
    return result

通过使用圆括号,您将返回一个,从逻辑上讲,它将为您提供与列表理解相同的一组值,但与列表理解一次创建所有值不同,生成器在需要时一次创建一个值。

它基本上是一种紧凑的形式:

def generator_function():
    for e1 in edit1(word):
        for e2 in edit1(e1):
            yield e2
parantasis()返回一个生成器对象


方括号[]返回一个列表

它根本不是一个列表理解——它是一个生成器表达式(…它使用相同类型的表达式,但不是生成一个列表,而是生成一个迭代/生成器。)请描述edits1的内容,为什么要在同一个列表上迭代两次呢?如果不知道
edits1
实际上做了什么,很难说。仅基于函数名,这可能是为了在编辑距离2处生成单词而设计的。(a中a的e表示b中b的e)类似于a中a的嵌套:b中b的e。如果列表e附加到列表中,则为结果生成器上的每次迭代返回e