在类中使用集合;添加和删​​除集合中的元素

时间:2014-09-12 18:06:03

标签: python python-3.x

好的,所以我给了两个驱动程序文件,我必须创建一个类,这样驱动程序文件才能工作..以下是说明:

  

您的集合类必须命名为Set。 set类的每个对象都应该包含该类的所有元素的列表(实例数据)。此列表应命名为members(在类中,您必须使用名为self.members的python列表 - 不要使用Python Set类,自己创建)。对于此分配,您必须包括以下方法:

     
      
  • __init__()构造函数将是一个不带任何参数的默认构造函数。它将使用空列表初始化列表(实例数据)。
  •   
  • add_element(integer)此方法将向集合中添加一个整数。您可以假设只传递一个整数。无需验证参数是否为此赋值的整数。
  •   
  • remove_element(integer)此方法将删除从集合传递给它的值。
  •   
  • remove_all()此方法从列表中删除所有值,使其为空。
  •   
  • has_element(x)此方法采用整数,如果它是调用对象的成员,则返回True。否则返回False
  •   
  • __repr__()此方法允许使用python的Set函数通过返回字符串来打印print()。当有n个元素时,应使用常规集合表示法打印该集合:{element1,element2,... element}。如果集合为空,则应打印{}
  •   
  • __str__()此方法允许Set与python的str()函数一起使用。它返回一个与__repr__()方法返回的字符串相同的字符串。
  •   
  • __add__此方法重载+运算符以为我们的Set类提供联合功能。此方法返回一个新的Set,其中包含要添加的两个集的所有成员。
  •   
  • intersect(x)此方法返回一个Set对象,其中包含调用SetSet x中存在的元素(正在传递的元素)
  •   
  • has_subset(x)此方法与上周的is_element()类似,但不相同。参数应该是另一个Set,而不是传递整数。如果传递的True是调用Set的子集,则返回Set。否则返回False
  •   
     

第1部分:

     

使用默认构造函数(不传递任何参数),addElementremoveElementremoveAll函数编写类。

我很困惑,我应该如何设置它!如果我可以得到第一部分的帮助,我想我可以做其他三个部分。这是我到目前为止所拥有的......但我知道它完全被搞砸了! “定型”的事情真的搞砸了我。我不知道如何添加或删除任何内容。

class Set:
     def __init__(self):
          self.members = []
          set = {}        
     def add_element(self):
            return self.add()        
     def remove_element(self):
          return self.remove()        
     def get_remove_all(self):
          self.remove_all()

3 个答案:

答案 0 :(得分:0)

我不想给你一个完整的问题解决方案,因为这是一项我认为应该由你自己解决的任务......

作业要求您创建一个类,而不是函数。所以这就是你如何开始:

class Set(object):

    def __init__(self):
        self.members = []

    def add_element(self, some_integer):
        if not some_integer in self.members:
            self.members.append(some_integer)

    def get_remove_all(self):
        self.members = []
...

答案 1 :(得分:0)

我故意实施了错误的解决方案,但是你应该向老师提供这个,这是一个更好的方式来做这个荒谬的任务。我的意思是,你的老师甚至可以对这些方法的命名保持一致。

class Set(object):

    def __init__(self):
        self.members = {}

    def addElement(self, member):
        self.members[member] = None

    def removeElement(self, member):
        if member in self.members:
            del self.members[member]
        else:
            raise ValueError('Item not in the set.')

    def removeAll(self):
        self.members = {}

答案 2 :(得分:0)

此分配的目的是将列表操作应用于问题。没有关系,Set类有点傻......它是关于用列表练习的。您可以对列表执行的一些操作包括x in mylistdel mylist[x]mylist.append(x)[x for x in mylist if x in otherlist]。所以,开始将它们应用于Set类:

class Set(object):   # python 2.x, in 3.x you can just say class Set:

    def __init__(self):
        self.member = []

    def add_element(self, integer):
        if integer not in self.member:
            self.member.append(integer)

    ...