如何解决列表理解比for循环有什么优势?
列表理解比构建列表的显式循环更紧凑 , 更快捷for
:
def slower():
result = []
for elem in some_iterable:
result.append(elem)
return result
def faster():
return [elem for elem in some_iterable]
这是因为调用.append()
alist
会导致列表对象增长(以块为单位),从而分别为新元素腾出空间,而列表推导会首先创建所有元素,然后再创建一次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
在这种情况下,只需坚持正常循环即可。
解决方法
在Python中的循环上使用列表理解有什么优势for
?
是主要是使其更具可读性,还是有其他原因使用列表理解而不是循环?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。