重复项已添加到列表Python

时间:2018-10-04 02:13:07

标签: python python-3.x

我有一个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?谢谢。

1 个答案:

答案 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的麻烦。