本文介绍了Python:如何以合理的性能仅获取正数的嵌套int列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的代码可能很慢:
onlyPositives = map ( (lambda mylist: [elem for elem in mylist if elem > 0]) , myintlist )
什么是快速的方法?(用于100万个大小为50整数的子列表).
what is a fast way to do that?(For 1 million sub lists of size 50 ints).
推荐答案
单独定义函数而不是使用lambda
,并使用列表推导而不是map()
:
Define the function separately instead of using a lambda
and use a list comprehension instead of map()
:
def func(mylist):
return [elem for elem in mylist if elem > 0]
onlyPositives = [func(e) for e in myintlist]
根据下面的评论,我认为有必要对此代码的各个版本进行概要分析,包括map()
,filter()
和生成器表达式,以查看最快的版本.
Based on the comments below I think it's worth profiling various versions of this code, including map()
, filter()
and generator expressions to see what's fastest.
但是,只有一百万个子列表,您只能做很多事情.
However with one million sublists there's only so much you can do.
这篇关于Python:如何以合理的性能仅获取正数的嵌套int列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!