算法:如何删除每个其他文件
我有一个文件夹里面有成千上万张图片。
我想删除每隔一张的图片。
有什么有效的方法可以做到这一点吗?
用 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()这个表示法的意思吗?它意味着(除了其他意思)常数乘法因子是无关紧要的,对吧?