使用集合判断成员是否存在(性能)

要判断某个容器是否包含特定成员,用集合比用列表更合适。集合底层使用了哈希表数据结构。
要判断集合中是否存在某个对象obj,python只需先用hash(obj)算出它的哈希值,然后直接去
哈希表对应位置检查obj是否存在即可,根本不需要关心哈希表的其他部分。

如代码需要进行in判断,可以考虑把目标容器转换成集合类型,作为查找时的索引使用
VALID_NAMES = ['jack', 'mike', 'nancy', 'tom', ...]  # 列表中数据量越大越好,当数据量小时,直接用in即可,而不用转换为set再用in判断
VALID_NAMES_SET = set(VALID_NAMES)

def validate_name(name):
  if name not in VALID_NAMES_SET:
    raise ValueError(f'{name} is not a valid name!')
posted @ 2022-09-06 04:25  我在路上回头看  阅读(86)  评论(0编辑  收藏  举报