列表推导相对于 for 循环有什么优势?
- 2025-03-21 09:06:00
- admin 原创
- 31
问题描述:
在 Python 中,使用列表推导式相对于循环有什么优势?for
主要是为了使其更易于阅读,还是有其他原因使用列表理解而不是循环?
解决方案 1:
列表推导比显式循环构建列表更紧凑、更快:for
def slower():
result = []
for elem in some_iterable:
result.append(elem)
return result
def faster():
return [elem for elem in some_iterable]
这是因为调用.append()
会list
导致列表对象(以块的形式)增长,以便为新元素单独腾出空间,而列表推导式会先收集所有元素,然后创建以便list
一次性容纳所有元素:
>>> some_iterable = range(1000)
>>> import timeit
>>> timeit.timeit('f()', 'from __main__ import slower as f', number=10000)
1.4456570148468018
>>> timeit.timeit('f()', 'from __main__ import faster as f', number=10000)
0.49323201179504395
但是,这并不意味着你应该开始对所有事情都使用列表推导!列表推导仍将构建一个列表对象;如果你只是因为它给你一个单行循环而使用列表推导,请再想想。你可能浪费了周期来构建一个列表对象,然后又将其丢弃。在这种情况下,只需坚持使用正常for
循环即可。
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD