我正在定義一個僅使用一組整數的類。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