Why do I have to call my filter multiple times for it to fully filter?

part = ["A/"]
parts = map(lambda x: "/" + x, part)

data = ["/A/", "/A/a"]

data = filter(lambda site: all(part not in site for part in parts), data)

print(len(set(data)))

if len(set(data)) > 0:
    print(len(set(data)))
    print(set(data))

That gets me “1” while removing the first print statement gets me 0 and the empty set.

So filtering seems to only filter out the first thing when called? I thought it worked differently, but did something change and I didn’t notice? Or am I not using Filter right?