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

Python实现:嵌套列表所有第二个元素相同时打印,否则执行else逻辑

问题修正:判断嵌套列表子列表第二个元素是否全相同

你的代码存在两个关键问题:

  • jobs_name的定义不规范,当前是三个独立元组组成的序列,建议改为嵌套列表格式(虽然元组也能正常遍历,但列表嵌套更符合常规写法)
  • 核心判断逻辑错误:j[1] == j[1]是恒成立的语句,完全无法实现“所有子列表第二个元素是否相同”的判断需求

以下是修正后的代码,完全符合你的需求:

# 修正为嵌套列表格式
jobs_name = [
    ['nbu.stn.prd.allbackups.box.lp2', 'SU'],
    ['nbu.stn.prd.1800.box.lp2', 'RU'],
    ['nbu.stn.prd.1810.box.lp2', 'RU']
]

def check_box():
    # 提取所有子列表的第二个元素
    all_statuses = [job[1] for job in jobs_name]
    # 取第一个状态作为基准,检查所有状态是否一致
    all_same = all(status == all_statuses[0] for status in all_statuses)
    
    # 根据判断结果选择前缀
    prefix = "Status of the box: " if all_same else "Status of the boxes: "
    # 遍历输出每个子列表的内容
    for job in jobs_name:
        res = " ".join(job)
        print(prefix + res)

check_box()

代码说明:

  1. 规范定义嵌套列表:将jobs_name改为标准的嵌套列表,结构更清晰
  2. 批量提取状态值:用列表推导式all_statuses收集所有子列表的第二个元素
  3. 判断是否全部相同:用all()函数检查所有状态是否等于第一个状态值,all()会在所有元素满足条件时返回True
  4. 统一前缀输出:根据all_same的结果选择对应的打印前缀,再遍历所有子列表输出内容

这样运行后,因为你的示例数据里有SU和RU两种状态,会执行else分支的前缀,输出所有子列表内容;如果所有子列表第二个元素都相同(比如全是SU),则会用Status of the box:作为前缀输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 23:45:03