You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何高效判断可变basket列表中是否存在固定pets列表的元素?

优化方案:用集合提升成员检测效率

你的现有代码逻辑没问题,但可以通过将固定的pets列表转为集合来大幅提升查找速度,核心原因在于:

  • 列表的in操作是O(n)复杂度,每次检查元素都要遍历整个300个元素的pets列表;
  • 集合的in操作是O(1)复杂度,依靠哈希表直接定位,单次查找几乎无开销。

具体实现

因为pets是固定列表,只需要一次性转成集合(仅执行一次即可):

# 把原pets列表转成集合,仅初始化时执行一次
pets_set = set(pets)

# 检查basket的逻辑(每次basket变化时执行)
flag = 0
for item in basket:
    if item in pets_set:
        flag = 1
        break

更简洁的等价写法

如果你只是需要判断存在性,也可以用any()配合生成器表达式,它会在找到第一个匹配项时立刻停止迭代,和你的原逻辑完全一致:

pets_set = set(pets)
has_pet_in_basket = any(item in pets_set for item in basket)
# has_pet_in_basket 直接返回布尔结果,找到第一个匹配就停止

效率对比

原方案最坏情况下要做5×300=1500次元素比较,而用集合后最多只需要5次哈希查找,对于你的场景(小basket+固定大pets),性能提升非常显著。

内容的提问来源于stack exchange,提问作者Frash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 00:00:04