Python 以下代码的算法或性能改进

Python 以下代码的算法或性能改进,python,Python,我为面试准备网站上的一个问题编写了以下程序。我想知道这段代码是否有效,或者如果无效,我们如何改进 我的问题 编写一个函数,该函数采用整数flight_长度(以分钟为单位)和整数movie_长度列表(以分钟为单位),并返回一个布尔值,指示movie_长度中是否有两个数字的和等于flight_长度 构建功能时: 假设你的用户只看两部电影 不要让你的用户看同一部电影两次 优化内存上的运行时 def movie_length(fligh_length,movietimes): newmovietim

我为面试准备网站上的一个问题编写了以下程序。我想知道这段代码是否有效,或者如果无效,我们如何改进

我的问题

编写一个函数,该函数采用整数flight_长度(以分钟为单位)和整数movie_长度列表(以分钟为单位),并返回一个布尔值,指示movie_长度中是否有两个数字的和等于flight_长度

构建功能时:

假设你的用户只看两部电影 不要让你的用户看同一部电影两次 优化内存上的运行时

def movie_length(fligh_length,movietimes):
  newmovietimes =[]
  for time in movietimes[0::]:
    if time not in newmovietimes:
      newmovietimes.append(time)
    else:
      print("movie times are equal")
  if fligh_length == sum(newmovietimes):
    return print("you can watch")
  else:
    return 

print("you can't watch")


movie_length(11,[8,2])

使用
newmovietimes=set(movietimes)
将时间减少到唯一时间的循环肯定会更有效,但实际上这是一个bug;如果有两部5分钟的电影,你可以在10分钟内连续观看

如果我理解正确,你的代码并不能解决全部问题;您应该从电影时间列表中找到两部电影,如果有满足约束的多个组合,请将它们全部提交。与
(10[4,5,6,5])
一样,您应该找到6+4和5+5的组合


(最后,您只返回一个布尔值来说明是否找到了答案,因此您可以在找到答案后立即退出;但如果需要,您的代码应该可以轻松扩展以查找所有排列-这就是完全解决此问题所需的条件。)

工作代码的审查应转到@UnholySheep谢谢