【问题标题】:python: map() or list comprehension? [duplicate]python: map() 还是列表理解? [复制]
【发布时间】:2016-07-23 09:05:50
【问题描述】:

pythonistas:更快,a 类似于[ str(x) for x in list(range(100)) ]

ints = map(int, a)

或者

ints = [ int(x) for x in a ]

假设a 将是一个相对较大的字符串列表...

【问题讨论】:

  • 地图会更快,之后是个人喜好。 map 发生在 c 级别,一旦您使用带有某种内置方法的不带 lambda 的 map,它通常会比在列表 comp 中执行相同操作更快
  • CPython 没有大多数使 C 或 Java 等语言难以进行基准测试的效果,因此您只需 time it 就可以得到正确的答案。
  • 阅读这个:stackoverflow.com/a/1247490/4941927 我认为每一个都可以根据您的需要有所帮助。

标签: python


【解决方案1】:

map 在我的笔记本电脑上看起来更快(没有 lambda)(Macbook Pro Mid 2014,OSX 10.11.4,16GB DDR3 内存,2.2 GHz Intel Core i7) :

使用 Python 2.7.10 测试

>>> timeit.timeit("[int(x) for x in range(100)]", number=100000)
1.6301331520080566

>>> timeit.timeit("map(int, range(100))", number=100000)
0.9462239742279053

但是,使用带有 lambda 函数的 map 是最慢的:

>>> timeit.timeit("map(lambda x: int(x), range(100))", number=100000)
2.285655994415283

【讨论】:

    猜你喜欢
    • 2011-10-01
    • 2010-11-27
    • 1970-01-01
    • 2011-06-15
    • 2013-03-11
    • 2016-11-14
    • 1970-01-01
    • 2020-11-03
    相关资源
    最近更新 更多