A-B 么。
class superList(list):
def __sub__(self,b):
a = self[:] # 这是一个 copy,赋值给一个临时变量
b = b[:] # 同上
while len(b) > 0: # 循环,当 b 列表中仍有元素时
element_b = b.pop() # 移除 b 中一个元素,并将此元素赋值给 变量 element_b
if element_b in a: # 如果 element_b 在 列表 a 也就是 self 中
a.remove(element_b) # 减法开始了,从 a 也就是 self 也就是 A-B 的 A 中,移除 B 元素
return a # 返回列表 a
print superList([1,2,3])-superList([3,4])
这是一个对 list 类的运算符重载的示例。如果直接用 lista – listb,会报错,因为 python 的 list 不支持这种运算。
题主可以尝试重载一下 __add__ 试试,正常的 add,就是加嘛,但我们这里让它变成减。
#!/usr/bin/env python3
# coding=utf-8
class superList(list):
def __sub__(self, b):
a = self[:]
b = b[:]
while len(b) > 0:
element_b = b.pop()
if element_b in a:
a.remove(element_b