在python中创建列表的最佳和或最快方法

在python中创建列表的最佳和或最快方法,第1张

在python中创建列表的最佳和/或最快方法

让我们使用进行一些时间测试*

timeit.timeit

>>> from timeit import timeit>>>>>> # Test 1>>> test = """... my_list = []... for i in xrange(50):...     my_list.append(0)... """>>> timeit(test)22.384258893239178>>>>>> # Test 2>>> test = """... my_list = []... for i in xrange(50):...     my_list += [0]... """>>> timeit(test)34.494779364416445>>>>>> # Test 3>>> test = "my_list = [0 for i in xrange(50)]">>> timeit(test)9.490926919482774>>>>>> # Test 4>>> test = "my_list = [0] * 50">>> timeit(test)1.5340533503559755>>>

从上面可以看到,最后一种方法是迄今为止最快的。


但是,它 只能 与不可变项(例如整数)一起使用。这是因为它将创建一个引用相同项目的列表。

下面是一个演示:

>>> lst = [[]] * 3>>> lst[[], [], []]>>> # The ids of the items in `lst` are the same>>> id(lst[0])28734408>>> id(lst[1])28734408>>> id(lst[2])28734408>>>

这种行为通常是不希望的,并且可能导致代码中的错误。

如果您有可变项(例如列表),则应该使用仍然非常快的列表理解:

>>> lst = [[] for _ in xrange(3)]>>> lst[[], [], []]>>> # The ids of the items in `lst` are different>>> id(lst[0])28796688>>> id(lst[1])28796648>>> id(lst[2])28736168>>>

*注意:在所有测试中,我都替换

range
xrange
。由于后者返回迭代器,因此它应始终比前者更快。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zaji/5643962.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存