dictionary - 在 python 中,map(func,list) 和 [func(x) for x in list] 有什么区别

标签 dictionary python

据我所知,唯一的区别是速度,您必须在定义 lambda 函数时稍微花点心思。

例如:

map(lambda x: x + 1, range(4)) == [(lambda x: x + 1)(y) for y in range(4)]

在我看来,第二种方式更像 pythonic,但我不确定为什么。

编辑:

是的,我知道 lambda 会在第二个示例中被排除,我只是想尽可能显示等效代码。

最佳答案

正确的做法是

[y + 1 for y in range(4)]

这里不需要构造lambda函数。您的代码会在列表理解的每次迭代中不必要地构建一个新的函数对象。

也就是说,您可以将对 map() 的任何调用编写为等效的列表理解。如果 map() 的第一个参数是 lambda 函数,通常首选列表理解。如果 map() 的第一个参数是函数名,则两种变体都可以。有些人(包括我)更喜欢,比如说,

map(str, my_list)

而其他人更喜欢

[str(x) for x in my_list]

关于dictionary - 在 python 中,map(func,list) 和 [func(x) for x in list] 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9843741/

相关文章:

python - python 私有(private)变量是否可以在不使用 object._className__attributeName 的情况下更改?

list - 当字典更改时,列表中的所有字典都会更改其值

c++ - 在 C++ 映射中找不到元素

python - 使用 psycopg2 执行 SQL 查询

python xml查询获取父级

python - 在嵌套的 python 字典和列表中查找目标值的路径

python - Python 中的 Tkinter 初学者 : Functions with Inputs

python - 将列表字典写入 CSV 文件

python - 将字典导出到 json 文件

javascript - 样式化图像映射