class myList(list):
def short(self):
minlen = min(map(len, self))
return myList( filter(lambda x: len(x) == minlen, self) )
def __add__(self, other):
mix = [s.union(o) for s in self for o in other]
return myList( map(set, {*map(tuple, mix)}) )
def __radd__(self, other):
return self
l1 = myList( [{1, 2, 3}, {3}, {4, 5}] )
l2 = myList( [{1, 2, 3}, {6, 7}] )
l3 = myList( [{4}] )
mix = sum([l1, l2, l3])
print(mix.short())
# or
print((l1 + l2 + l3).short())
Y2xhc3MgbXlMaXN0KGxpc3QpOgogICAgZGVmIHNob3J0KHNlbGYpOgogICAgICAgIG1pbmxlbiA9IG1pbihtYXAobGVuLCBzZWxmKSkKICAgICAgICByZXR1cm4gbXlMaXN0KCBmaWx0ZXIobGFtYmRhIHg6IGxlbih4KSA9PSBtaW5sZW4sIHNlbGYpICkKCiAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgbWl4ID0gW3MudW5pb24obykgZm9yIHMgaW4gc2VsZiBmb3IgbyBpbiBvdGhlcl0KICAgICAgICByZXR1cm4gbXlMaXN0KCBtYXAoc2V0LCB7Km1hcCh0dXBsZSwgbWl4KX0pICkKICAgICAgICAKCiAgICBkZWYgX19yYWRkX18oc2VsZiwgb3RoZXIpOgogICAgICAgIHJldHVybiBzZWxmCgpsMSA9IG15TGlzdCggW3sxLCAyLCAzfSwgezN9LCB7NCwgNX1dICkKbDIgPSBteUxpc3QoIFt7MSwgMiwgM30sIHs2LCA3fV0gKQpsMyA9IG15TGlzdCggW3s0fV0gKQoKbWl4ID0gc3VtKFtsMSwgbDIsIGwzXSkKcHJpbnQobWl4LnNob3J0KCkpCgojIG9yCnByaW50KChsMSArIGwyICsgbDMpLnNob3J0KCkpCg==
[{3, 4, 6, 7}, {1, 2, 3, 4}, {4, 5, 6, 7}]
[{3, 4, 6, 7}, {1, 2, 3, 4}, {4, 5, 6, 7}]