Python附加到对象成员

时间:2015-06-03 18:04:12

标签: python

我已经实现了一个非常基本的算法来在python中打印列表的排列。但是,我无法弄清楚对象属性行为的原因。 这是代码:

class Solution:
    def permute(self, A):
        self.ans = []
        self.generate_perm(list(A))       
        return self.ans

    def generate_perm(self, A, k=0):
        #print A, k
        #print self.ans
        if k == len(A):
            self.process(A)
        else:
            for i in xrange(k, len(A)):
                A[k], A[i] = A[i], A[k]
                self.generate_perm(A, k+1)
                A[k], A[i] = A[i], A[k]

    def process(self,A):
        print A
        self.ans.append(A)


sol = Solution()
print sol.permute([1,2,3])

上述代码段的输出为:

[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 2, 1]
[3, 1, 2]
[[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]

我期待append方法将输入添加到process(),但不知何故,它只是将最后一个附加项复制到list +中存在的术语数量中再添加一个。

我认为这应该是相当直接的。

0 个答案:

没有答案