返回信息流请问这两种写法在**执行**时有区别吗?
```Python
nums = [1, 2, 3, 4]
square = [x * x for x in nums]
square = map(lambda x: x * x, nums)
```
这是一条镜像帖。来源:北邮人论坛 / python / #21207同步于 2018/3/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
【问题】Python中这两种写法在执行时有区别吗
lzj0218
2018/3/25镜像同步15 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
通常都用列表推导,lambda表达式有时会在函数参数里用到,map我很少用,其实第二个例子里,map和lambda组合起来才达到跟列表推导一样的效果
fluent Python里有个例子,你可以跑跑看https://github.com/fluentpython/example-code/blob/master/02-array-seq/listcomp_speed.py
【 在 ztinpn (ztinpn) 的大作中提到: 】
: 计时看看哪个快?
可是在我的机器上列表推导更快……Python 2.7.9
【 在 fuxuemingzhu 的大作中提到: 】
: 直接运行计时看看不就得了。
: 结果说明map函数明显更高效。
: [upload=1][/upload]
【 在 lzj0218 的大作中提到: 】
: 可是在我的机器上列表推导更快……Python 2.7.9
: [upload=1][/upload]
:
map在python2是返回列表,在python3是返回生成器
哦,忘说了,我的是Python 3.6.1 :: Anaconda custom (64-bit)
【 在 lzj0218 的大作中提到: 】
: 可是在我的机器上列表推导更快……Python 2.7.9
: [upload=1][/upload]
:
终于明白python3为什么把map改成生成器了哈哈
【 在 intmain 的大作中提到: 】
: map在python2是返回列表,在python3是返回生成器