我现在正在CentOS 7上使用Python2.7.5。我想看看发电机的性能差异,列表.append和列表理解。这是我的代码块:
import timeit
import random
def generate(num):
for _ in xrange(num):
yield random.randrange(10)
def create_list1(num):
numbers = []
for _ in xrange(num):
numbers.append(random.randrange(10))
return numbers
def create_list2(num):
return [random.randrange(10) for _ in xrange(num)]
if __name__ == '__main__':
print(timeit.timeit(
'sum(generate(999999))', setup='from __main__ import generate',
number=1)) # >>> 0.649271011353
print(timeit.timeit(
'sum(create_list1(999999))', setup='from __main__ import create_list1',
number=1)) # >>> 0.667152881622
print(timeit.timeit(
'sum(create_list2(999999))', setup='from __main__ import create_list2',
number=1)) # >>> 0.590311050415
我已经运行了好几次,趋势是相似的。创建列表1>;生成>;创建列表2。你知道吗
因此,我在这里找到了一些question,很好地解释了为什么列表理解“可能”比python2中的generator更有效。但这是什么呢
In Python 2 you are not going to get any additional line for a list comprehension(LC) because LC are not creating any object, but in Python 3 you will because now to make it similar to a generator expression an additional code object() is created for a LC as well.
你什么意思?那能给我们一份清单吗?为什么列表理解像“更好的版本”?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐