列表理解比for循环有什么优势?

列表理解比for循环有什么优势?,第1张

列表理解比for循环有什么优势?

列表理解比构建列表的显式循环更紧凑 更快捷

for

def slower():    result = []    for elem in some_iterable:        result.append(elem)    return resultdef faster():    return [elem for elem in some_iterable]

这是因为调用

.append()
a
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
在这种情况下,只需坚持正常循环即可。



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

原文地址: https://outofmemory.cn/zaji/5667731.html

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

发表评论

登录后才能评论

评论列表(0条)

保存