列表理解是渐近最优解:
somelist = [x for x in somelist if not determine(x)]
它只对列表进行一次传递,因此运行时间为O(n)。由于您需要在每个对象上调用define(),因此任何算法都至少需要O(n)个 *** 作。列表理解确实需要进行一些复制,但是它只是复制对对象的引用,而不是复制对象本身。
从Python中的列表中删除项目为O(n),因此循环内带有remove,pop或del的所有内容均为O(n ** 2)。
另外,在CPython列表中,理解要比for循环快。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)