Python 比较解决方案之间的运行时

Python 比较解决方案之间的运行时,python,Python,对于以下Leetcode问题,我有两种Python解决方案: 第一个解决方案耗时704 ms: d = dict() for index, num in enumerate(nums): if num in d.keys(): return d[num], index else: d[target - num] = index 第二种溶液仅需36 ms: d = dict() for i in range(len(nums)): i

对于以下Leetcode问题,我有两种Python解决方案:

第一个解决方案耗时704 ms:

d = dict()

for index, num in enumerate(nums):
    if num in d.keys():
        return d[num], index
    else:
        d[target - num] = index
第二种溶液仅需36 ms:

d = dict()

for i in range(len(nums)):
    if (target - nums[i]) in d:
        return d[target-nums[i]], i
    else:
        d[nums[i]] = i

我不知道为什么第二种解决方案比第一种解决方案快得多。这种方法非常相似,但我能看到的唯一区别是第一个解决方案使用enumerate(),而第二个解决方案使用range()。这背后有什么想法?

这两种解决方案的性能将受到列表中项目顺序(即测试数据的性质)的影响。另外,使用d.keys()中的
xxx执行顺序搜索,而d中的
xxx将给出相同的结果,但速度更快,受项目顺序的影响更小

其他区别是其余4行中的3行做了不同的操作。您用于确定运行时的输入是什么?你是如何测量运行时的?我不确定他们使用了什么输入,因为这是一个leetcode问题@奥林巴斯:这是我的梦想。我为您确定了这两种解决方案的基准。第一个解决方案比第二个快。谢谢!复制第二个解决方案时出错。它应该是'xxx in d',而不是'xxx in d.keys()'。第二种解决方案现在应该更快了。