为什么Python教程说列表推导比map()更灵活?

Che*_*eso 3 python list-comprehension

Python教程中,它说:

在此输入图像描述

为什么?我不认为理解是如何"更灵活"的.在我看来,只是语法上的差异.我可以轻松地做到:

def my_round(i):
    return str(round(355/113.0, i))

a = map(my_round, range(1, 6))
Run Code Online (Sandbox Code Playgroud)

我不认为map()这里缺乏灵活性.

谁能详细说明?

Gab*_*abe 6

列表推导可以包含嵌套循环和条件:

nonzeros = [val for y in rows
                for val in y.cols
                if val != 0]
Run Code Online (Sandbox Code Playgroud)


小智 6

差异相对较小,但您必须编写一个def包含名称的完全成熟或lambda使用非平凡表达式map,而您可以在列表解析中使用它们.此外,列表推导包括过滤,而您需要单独filter调用(低效率,并且parens快速增长超出可以轻松管理的范围).