Python 在课堂上使用集合;从集合中添加和删除元素
好的,给了我两个驱动程序文件,我必须创建一个类,这样驱动程序文件就可以工作了。。以下是说明: 您的set类必须命名为Python 在课堂上使用集合;从集合中添加和删除元素,python,python-3.x,Python,Python 3.x,好的,给了我两个驱动程序文件,我必须创建一个类,这样驱动程序文件就可以工作了。。以下是说明: 您的set类必须命名为set。set类的每个对象都应该包含类的所有元素(实例数据)的列表。此列表应命名为members(在类中,您必须使用名为self.members的python列表-不要使用pythonSet类,创建自己的类)。对于此分配,您必须包括以下方法: \uuuu init\uuuu()构造函数将是不接受任何参数的默认构造函数。它将使用空列表初始化列表(实例数据) 添加元素(整数)此方法将
set
。set类的每个对象都应该包含类的所有元素(实例数据)的列表。此列表应命名为members
(在类中,您必须使用名为self.members的python列表-不要使用pythonSet
类,创建自己的类)。对于此分配,您必须包括以下方法:
\uuuu init\uuuu()
构造函数将是不接受任何参数的默认构造函数。它将使用空列表初始化列表(实例数据)
添加元素(整数)
此方法将向集合中添加一个整数。您可以假定只向它传递一个整数。无需验证此赋值的参数是否为整数
remove\u元素(整数)
此方法将从集合中删除传递给它的值
remove\u all()
此方法从列表中删除所有值,使其为空
has_element(x)
如果它是调用对象的成员,则此方法接受一个整数并返回True
。否则它将返回False
\uuuu repr\uuuu()
此方法允许通过返回字符串,使用python的print()
函数打印Set
。当有n个元素时,应使用规则的集合表示法打印集合:{element1,element2,…element}<如果集合为空,则应打印代码>{}
\uuu str\uuu()
此方法允许将集合与python的str()
函数一起使用。它返回的字符串与\uuu repr\uuu()方法返回的字符串相同
\uuuu add\uuuu
此方法重载+
运算符,以提供Set类的联合功能。此方法返回一个新的集
,其中包含两个添加集的所有成员intersect(x)
此方法返回一个Set
对象,该对象包含调用Set
和Set
x
中存在的元素(正在传递的元素)has_subset(x)
此方法与上周的is_element()
类似,但不同。参数应该是另一个Set
,而不是传递一个整数。如果传递的集合
是调用的集合
的子集,则返回True
。否则它将返回False
addElement
、removelement
和removeAll
函数编写类
我真搞不懂该怎么设置这个!如果我能在第一部分得到帮助,我想我可以完成其他三部分。这是我到目前为止所拥有的。。。但我知道它完全搞砸了!“设置”的事情真的把我搞砸了。我不知道如何为此添加或删除任何内容
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()
我不想给你一个问题的完整解决方案,因为这是一个我认为应该由你自己解决的任务 作业要求您创建类,而不是函数。因此,以下是您可以开始的方式:
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 = []
...
我故意实施了错误的解决方案,但你应该把它提供给你的老师,作为完成这项荒谬作业的更好方法。我的意思是,拜托,你的老师甚至不能对方法的命名保持一致
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 = {}
本作业的目的是将列表操作应用于问题。这不要紧,设定类是有点傻。。。这是关于练习列表。使用列表可以执行的一些操作有:mylist中的
x
,del mylist[x]
,mylist.append(x)
和[x代表mylist中的x,如果其他列表中有x]
。因此,只需开始将它们应用于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)
...
OP创建了一个类,但这不起作用。。。只有当整数不在列表中时,才应附加该整数。@tdelaney是的,对。这更多地是关于类方法框架作为起点。但是我可以为
add_element
@PadraicCunningham添加一个工作解决方案是的,他/她有:在我添加我的答案后,OP被相应地编辑。在我写这篇文章的时候,它是一个没有类的函数集合…@PadraicCunningham我明白了,也许它的格式不正确,我只是忽略了它。我的错。我很困惑,为什么你要用Python列表而不是dict来存储成员。@AliAfshar-这是一个特别需要列表的作业。@tdelaney这是一个非常糟糕的列表作业,因为它教给你一些非常糟糕的东西,却没有教给你一些关于数据结构的非常重要的东西。你应该告诉你的老师,如果你的老师想聊的话,请转告我的详细情况。@AliAfshar-我不同意。所有这些列表操作都很有用,并且普遍适用。OP学习了一些关于类的知识,并对集合有了一些了解。随着时间的推移,老师可能会谈论另一个话题:什么样的数据结构最适合使用。但这并不能真正帮助你学习如何操作列表。重点是:这是一个关于何时使用列表的非常糟糕的例子。当然,我不会帮你做家庭作业。我希望这说明了一种更好的做事方式。