算法:如何删除每个其他文件

1 投票
8 回答
3920 浏览
提问于 2025-04-15 11:36

我有一个文件夹里面有成千上万张图片。
我想删除每隔一张的图片。
有什么有效的方法可以做到这一点吗?
用 i%2==0 的方式一个一个去检查还是 O(n) 的复杂度。
有没有更快的方法(最好是用 Python)?

谢谢!

8 个回答

3

用 i%2==0 来检查每一个文件,时间复杂度还是 O(n)。有没有更快的方法呢(最好是用 Python)?

要比 O(n) 更快,唯一的办法就是你的文件已经排好序了,而且你只想删除一个文件。

你提到 i%2==0,这意味着你是在删除每一个“偶数”文件。O(n/2) 其实还是 O(n)。

13

在编程中,有时候我们会遇到一些问题,可能会让我们感到困惑。比如,有人可能在使用某个工具或库的时候,发现它的表现和预期不一样。这种情况下,通常我们需要检查一下代码,看看是不是哪里出错了。

有时候,问题可能出在我们对工具的理解上。比如,某个函数的用法可能和我们想象的不同,或者我们没有正确传递参数。为了找到问题的根源,我们可以尝试逐步调试,或者查阅相关的文档和资料。

总之,遇到问题时,保持耐心,仔细检查代码,通常能找到解决办法。

import os
l = os.listdir('/some/dir/with/files')

for n in l[::2]:
    os.unlink(n)
21

要删除一半的N张图片,你不可能比O(N)更快!你知道O()这个表示法的意思吗?它意味着(除了其他意思)常数乘法因子是无关紧要的,对吧?

撰写回答