我刚刚开始编写Python编程,希望一些经验丰富的人可以给我
有关如何优化以下代码的提示.
我想要做的是浏览文件夹列表,使新列表仅包含每组文件夹中的顶级文件夹.
我一直在努力并编写下面的代码来完成工作,但是当使用包含数千个文件夹的列表时,伸缩性会非常差.
欢迎任何喜欢如何优化此例程的想法.
folderList = [ "c:\temp\data\1122 AA",\ "c:\temp\data\1122 AA\div",\ "c:\temp\data\1122 AA\div\Etc",\ "c:\temp\data\1122 AA\div\Etc2",\ "c:\temp\server1\div\2244_BB",\ "c:\temp\server1\div\2244_BB\pp",\ "c:\temp\server1\div\2244_BB\der\dedd",\ "c:\temp\server1\div\2244_BB\defwe23d\23ded",\ "c:\temp\123456789-BB",\ "c:\temp\123456789-BB\pp",\ "c:\temp\123456789-BB\der\dee32d",\ "c:\temp\data\123456789-BB\ded\ve_23"]l2 = folderList.copy()ind = []indexes_to_be_deleted = []for el in l2: for IDx,x in enumerate(l2): if el in x: ind.append(IDx)counts = Counter(ind)for l,count in counts.most_common(): if count > 1: indexes_to_be_deleted.append(l) for i in sorted(indexes_to_be_deleted,reverse=True): del folderList[i]Output:c:\temp\data\1122 AA\c:\temp\server1\div\2244_BB\c:\temp\123456789-BB\
输出是预期的,只有每组文件夹中的顶级文件夹.但是,我希望你们中的一些人有一个如何使例程更快的想法.最佳答案我建议添加到新列表,而不是删除项目:
topFolders = [] for name in folderList: # sorted(folderList) if they are not already in order if topFolders and name.startswith(topFolders[-1]+"\"): continue topFolders.append(name)
您可以根据需要将其分配给原始列表
folderList = topFolders
总结 以上是内存溢出为你收集整理的清理文件夹列表,仅保留每个文件夹组中的顶级文件夹 全部内容,希望文章能够帮你解决清理文件夹列表,仅保留每个文件夹组中的顶级文件夹 所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)