class Foo:
def __init__(self, name, data):
self.name = str(name)
self.data = list(data)
foo1 = Foo('abc', [1, 2, 3])
foo2 = Foo('def', [4, 5, 6])
foo3 = Foo('ghi', [7, 8, 9])
my_list = [foo1, foo2, foo3]
from itertools import chain
def test(name, data):
data = frozenset(data)
return name, list(chain.from_iterable(data & set(foo.data)
for foo in my_list
if foo.name == name))
print test('def', [2, 3, 4, 5])
Y2xhc3MgRm9vOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGRhdGEpOgogICAgICAgIHNlbGYubmFtZSA9IHN0cihuYW1lKQogICAgICAgIHNlbGYuZGF0YSA9IGxpc3QoZGF0YSkKCgpmb28xID0gRm9vKCdhYmMnLCBbMSwgMiwgM10pCmZvbzIgPSBGb28oJ2RlZicsIFs0LCA1LCA2XSkKZm9vMyA9IEZvbygnZ2hpJywgWzcsIDgsIDldKQoKbXlfbGlzdCA9IFtmb28xLCBmb28yLCBmb28zXQoKZnJvbSBpdGVydG9vbHMgaW1wb3J0IGNoYWluCgpkZWYgdGVzdChuYW1lLCBkYXRhKToKICAgIGRhdGEgPSBmcm96ZW5zZXQoZGF0YSkKICAgIHJldHVybiBuYW1lLCBsaXN0KGNoYWluLmZyb21faXRlcmFibGUoZGF0YSAmIHNldChmb28uZGF0YSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGZvbyBpbiBteV9saXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZvby5uYW1lID09IG5hbWUpKQogICAgICAgICAgICAgICAgICAKcHJpbnQgdGVzdCgnZGVmJywgWzIsIDMsIDQsIDVdKQ==