我一直在玩Python中的map函数,我正在寻找一些帮助来理解以下行为:
foo="12345"
print map(int,foo)
Run Code Online (Sandbox Code Playgroud)
给你[1, 2, 3, 4, 5].显然是int(foo)吐出来的12345.究竟发生了什么?由于字符串可以按字符迭代,因此上述两行是同义词
print [int(x) for x in foo]
Run Code Online (Sandbox Code Playgroud)
我知道他们会输出相同的结果,但幕后有什么不同吗?一个比另一个更有效还是更好?还有一个"pythonic"吗?
非常感谢!
map() 在某些情况下,可能比使用列表推导更快一些,在某些情况下,map比列表推导慢.
使用内置功能时:
python -mtimeit -s'xs=xrange(1000)' 'map(int,"1234567890")'
10000 loops, best of 3: 18.3 usec per loop
python -mtimeit -s'xs=xrange(1000)' '[int(x) for x in "1234567890"]'
100000 loops, best of 3: 20 usec per loop
Run Code Online (Sandbox Code Playgroud)
与lambda,map()变慢:
python -mtimeit -s'xs=xrange(1000)' '[x*10 for x in "1234567890"]'
100000 loops, best of 3: 6.11 usec per loop
python -mtimeit -s'xs=xrange(1000)' 'map(lambda x:x*10,"1234567890")'
100000 loops, best of 3: 11.2 usec per loop
Run Code Online (Sandbox Code Playgroud)
但是,在python 3x中map()返回一个map对象,即迭代器
| 归档时间: |
|
| 查看次数: |
21483 次 |
| 最近记录: |