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

如何缩短冗余的多列表重复校验if语句,且保留功能支持通用扩展?

缩短冗余if校验语句的实现方案

你原有代码的本质是校验i中所有嵌套子元素全局无重复,基于这个逻辑可以直接把多层硬编码的判断替换为以下实现,完全不改变原有功能,且支持任意数量、任意长度的子列表适配。

方案1:最简通用实现(推荐)

直接将所有嵌套元素摊平后通过集合去重,对比去重前后的长度即可判断是否有重复元素,一行就能完成判断:

if len({elem for sublist in i for elem in sublist}) == sum(len(sublist) for sublist in i):
    best_combinations.append(i)

说明:

  • 完全等价于原if判断的校验逻辑
  • 自动适配任意数量的子列表、任意长度的子列表,无需修改代码
  • 元素为可哈希类型(数字、字符串、元组等)时性能远优于原硬编码判断

方案2:提前终止优化版(适合大数据量场景)

如果嵌套元素数量较多,可以提前在遇到第一个重复元素时就终止检查,节省不必要的遍历开销:

def is_all_unique(nested_list):
    seen = set()
    for sub in nested_list:
        for e in sub:
            if e in seen:
                return False
            seen.add(e)
    return True

if is_all_unique(i):
    best_combinations.append(i)

方案3:适配不可哈希元素版本

如果待校验的元素是列表等不可哈希类型,无法存入集合,可以改用列表存储已出现元素:

def is_all_unique_unhashable(nested_list):
    seen = []
    for sub in nested_list:
        for e in sub:
            if e in seen:
                return False
            seen.append(e)
    return True

if is_all_unique_unhashable(i):
    best_combinations.append(i)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:45:00