python代码优化,使用set操作替换list,优化查找
使用set操作替换list,优化查找效率
使用 set 和 list 进行查找操作的效率是不同的。具体来说:
列表 (list) 中的查找操作是线性的,时间复杂度为 𝑂(𝑛)。这意味着在列表中查找一个元素的时间会随着列表大小的增加而增加。
集合 (set) 中的查找操作是基于哈希表的,时间复杂度为 𝑂(1)。这意味着在集合中查找一个元素的时间不会随着集合大小的增加而显著增加。
优化后的代码
通过将 exist_list 转换为 exist_set,你将查找操作的时间复杂度从 𝑂(𝑛)O(n) 降低到了 𝑂(1)O(1)。这样即使文件数量很多,查找的时间也几乎不会增加。
# 原代码(查找效率低)
exist_list = os.listdir('')
# 优化后的代码(查找效率高)
exist_list = os.listdir('')
exist_set = set(exist_list)data_root = "/mnt/g/Zhang_pufen/raw/raw_frames"
exist_list = os.listdir('/mnt/g/Zhang_pufen/py/avqa_object_feat/')
exist_set = set(exist_list) # 使用集合来提高查找效率
file_list = os.listdir(data_root)
# 过滤掉已经存在特征文件的视频
filtered_file_list = [file for file in file_list if (file + '.npy') not in exist_set]for file_name in filtered_file_list:
评论
发表评论