python if (X not in Y) or (Z not in Y) 条件意外结果

python if (X not in Y) or (Z not in Y) condition unexpected result

有一个文件名列表,如:

files = ["f1", "f2", "f3", "f4", "f1.txt", "f3.pdf"]

并且我想找到那些具有相同名称的“txt”或“pdf”等效项的文件,并将它们从列表中删除。所以所需的输出是 f2 f4 f1.txt f3.pdf
我试过这个:

for f in files: 
     if f+".txt" not in files or f+".pdf" not in files: 
         print(f)

输出:f1 f2 f3 f4 f1.txt f3.pdf 这是错误的。

我也尝试在每个条件周围加上括号 not f+".txt" in files 但没有成功。
通过删除两个或一个“not”,输出符合预期:

for f in files: 
     if f+".txt" in files or f+".pdf" in files: 
         print(f)

输出:f1 f3
为了获得所需的输出,我可以在 if 块中使用 pass 语句并在 else 块中使用 print(f)。
但问题是“为什么第一个代码不起作用?”我在发布之前进行了一些搜索,但它们并不是我要找的。

试试这个代码:

files = ["f1", "f2", "f3", "f4", "f1.txt", "f3.pdf"]
for f in files: 
     if f+".txt" not in files and f+".pdf" not in files:
         print(f)