为什么[l [i]]比python中的[v]更快?

时间:2015-04-14 14:55:18

标签: python

我只是在在线评审系统中提交两种解决方案。

首先是:

class Solution:
     # @param S, a list of integer
     # @return a list of lists of integer
     def __init__(self):
         self.res = []

     def _subsets(self, cur, rest):
         if rest == []:
             return
         for i, v in enumerate(rest):
             S = cur[:] + [rest[i]]
             self.res.append(S)
             self._subsets(S, rest[i+1:])

     def subsets(self, S):
         S.sort()
         self._subsets([], S)

         self.res.append([])
         return self.res

第二个是:

 class Solution:
     # @param S, a list of integer
     # @return a list of lists of integer
     def __init__(self):
         self.res = []

     def _subsets(self, cur, rest):
         if rest == []:
             return
         for i, v in enumerate(rest):
             S = cur[:] + [v]
             self.res.append(S)
             self._subsets(S, rest[i+1:])

     def subsets(self, S):
         S.sort()
         self._subsets([], S)

         self.res.append([])
         return self.res

只有一个区别。在函数_subsets的第四行中,第一行是S = cur[:] + [rest[i]],第二行是S = cur[:] + [v]

我很确定[rest[i]][v]慢。我使用函数dis.dis来检查它们的字节码。它导致了相同的结论。但是,为什么第一个版本比第二个版本快?我想念一下吗?

0 个答案:

没有答案