我有一个MySet类,我想同时返回seta和setb中的元素。但是,它将两次返回该元素。
class MySet:
def __init__(self, elements):
self.elements=elements
def intersection(self, other_set):
new_set = list(self.elements)
for j in other_set:
if j in self.elements:
new_set.append(j)
for h in self.elements:
if h not in other_set:
new_set.remove(h)
new_set.sort()
return new_set
因此,如果seta=MySet([1,2,3])
和setb=MySet([1,5,6])
,setc=seta.intersection(setb.elements)
,则进行print(setc)
应该得到[1]
,而得到[1,1]
。我怎样才能解决这个问题?另外,如果没有setc=seta.intersection(setb)
,是否仍可以进行.elements
?谢谢。
答案 0 :(得分:0)
此代码仅返回两个集合之间共享的值的列表。
class MySet:
def __init__(self, elements):
self.elements=elements
def intersection(self, other_set):
return sorted(set(self.elements) & set(other_set))
seta=MySet([1,2,3])
setb=MySet([1,5,6])
setc=seta.intersection(setb.elements)
print(setc)
您的代码向[1,1]提供给定输入的原因是,您将匹配项追加到new_list,而不是简单地删除不匹配项。
有一些方法可以通过玩 repr 和您班上的类似内容来摆脱输入.elements的麻烦。