我正在定义一个仅使用一组整数的类。Python:定义一个只有整数定义的类
我不能使用以下数据类型定义我的类:set, frozenset and dictionaries
。
我需要帮助限定:
remove(self,i)
:整数i从集合中删除。如果我不在自我身上,会引发异常。
discard(self, i)
:整数i从集合中移除。如果我不在自我中,则不会引发异常
我正在定义一个仅使用一组整数的类。Python:定义一个只有整数定义的类
我不能使用以下数据类型定义我的类:set, frozenset and dictionaries
。
我需要帮助限定:
remove(self,i)
:整数i从集合中删除。如果我不在自我身上,会引发异常。
discard(self, i)
:整数i从集合中移除。如果我不在自我中,则不会引发异常
我无法在定义我的类时使用以下数据类型:set,frozenset和dictionaries。
它看起来像你要使用列表。 您可以使用列表的remove
方法并以适当的方式处理异常。
假设你正在使用基于你所说的内部列表,你可以做到这一点,像这样:
class Example(object):
def __init__(self):
self._list = list()
# all your other methods here...
def remove(self, i):
try:
self._list.remove(i)
except ValueError:
raise ValueError("i is not in the set.")
def discard(self, i):
try:
self._list.remove(i)
except ValueError:
pass
remove()
尝试删除元素和捕捉列表的ValueError异常,因此它可以抛出自己的。 discard()
也会做同样的事情,但如果发生ValueError,则不会执行任何操作。
这里的效率非常低,但使用完整实现MutableSet
ABC:
import collections
class MySet(collections.MutableSet):
def __init__(self, iterable=tuple()):
self._items = []
for value in iterable:
self.add(value)
def discard(self, value):
try: self._items.remove(value)
except ValueError:
pass
def add(self, value):
if value not in self:
self._items.append(value)
def __iter__(self):
return iter(self._items)
def __len__(self):
return len(self._items)
def __contains__(self, value):
return value in self._items
从collections.MutableSet
来源:
def remove(self, value):
if value not in self:
raise KeyError(value)
self.discard(value)
这里是我与重复做,采取一些想法从中
combList = list1 + list2
combList.sort()
last = combList[-1]
for i in range(len(combList)-2, -1, -1):
if last == combList[i]:
del combList[i]
else:
last = combList[i]
combList.sort()
for i in range(len(combList)):
print i+1, combList[i]
我完全同意唯一的LiOliQ方式就是做一个列表。
请告诉我们您到目前为止写的代码。 – 2009-12-18 21:57:39
这是非常不明确的。如果您向我们展示您尝试过的内容并询问更具体的问题,那么您会有更好的运气。这感觉就像试图让人们为你做你的功课。 – 2009-12-18 21:58:15
它不是家庭作业,它是一本书的练习,但书不附带答案。 – Lisa 2009-12-18 21:59:26