回答问题

我正在使用 Python,我注意到map()函数似乎并没有做太多事情。例如,如果我编写程序:

mylist = [1, 2, 3, 4, 5]

function = map(print, l)

print(function)

它没有提供任何优势:

mylist = [1, 2, 3, 4, 5]

for item in mylist:

print(item)

事实上,第二个选项创建的变量更少,对我来说总体上看起来更干净。我会假设map()提供了在像这个简单的示例中无法看到的优势,但它们到底是什么?

编辑:似乎有些人回答的问题与我打算问的问题不同。制作 Python 的开发人员显然在创建map()函数方面付出了一些努力,他们甚至决定不将其从 3.0 中移除,而是继续开发。他们决定它的基本功能是什么?

Answers

在列表推导之前,它曾经更有用。您可能已经看过类似的代码

[int(x[2]) for x in l]

回到列表推导之前,您可以将其写为

map(lambda x: int(x[2]), l)

(这也是在map返回迭代器之前。)

如今,列表推导和生成器表达式处理了map过去所做的大部分工作。map有时仍然更干净,尤其是当您不需要 lambda 时。例如,有些人喜欢

map(str, l)

超过

(str(x) for x in l)