数组中的元素重复

时间:2014-04-12 20:45:25

标签: python arrays python-3.x

我是Python3的新手,我在数组中遇到重复元素的问题。假设我有这个例子:

class A:
  arr1 = []

  def __init__(self):
    pass

  def add(self, b):
    self.arr1.append(b)

class B:
  arr2 = []

  def __init__(self):
    pass

  def add(self, val):
    self.arr2.append(val)

所以A包含B的对象数组,B包含值数组。如果我添加这样的值:

a = A()
b1 = B()
b2 = B()
a.add(b1)
a.add(b2)
a.arr1[0].add(5)
a.arr1[0].add(6)
a.arr1[1].add(3)

然后打印输出如下:

for e in a.arr1:
  for ee in e.arr2:
    print(ee)

我得到输出:5 6 3 5 6 3,为什么它不仅仅是5 6 3?我无法弄清楚我错过了什么。感谢帮助。顺便说一句。我只针对这个特定问题(重复值)简化了代码。

1 个答案:

答案 0 :(得分:2)

当你像这样声明B类时:

class B:
  arr2 = []
  ...

然后arr2是类级属性,这意味着它在对象之间共享。你想要做的是:

class B:
  def __init__(self):
    self.arr2 = []

这样,每个对象arr2都不同。课程Aarr1也是如此。