我是python的初学者,我试图在一个代码挑战网站上编写一个代码,当给定一个整数列表时,返回最接近零的整数。如果有两个不同的整数具有相同的差异,例如3和-3,则应返回None(但是,如果数字是重复的,例如3和3,则不算作)
我编写了一个代码,它似乎可以在python interpeters外部工作,但在网站内部,它给出了一个错误“带有SIGKILL信号的进程过早退出”
在外部Python解释器上,这似乎返回了我要查找的整数
def closest(lst):
ans = list(filter(lambda x: abs(0-x) == min([abs(0-i) for i in set(lst)]), set(lst)))
return ans[0] if len(ans) < 2 else None
我的代码中有什么导致效率低下的吗?还是网站
我怀疑编码网站通过传递一个非常大的
lst
生成器来测试您的函数。当您的程序将其转换为set
时,它会将整个输入加载到内存中。如果这占用了太多内存,您的进程可能会被OOM杀手杀死我认为下面的解决办法应该行得通。注意,它只是在
lst
上迭代,不构造任何其他大型数据结构;唯一的状态是堆栈变量c
和ans
。因此它使用常量内存量相关问题 更多 >
编程相关推荐