Python list comprehension 适配3个团队列表生成目标编码的写法
列表推导式调整方案
核心逻辑说明
你原有两层嵌套的列表推导式是为两个队伍生成独立的匹配掩码二维数组,现在需要输出单序列的队伍标记值,改为单层列表推导即可实现。
方案1:字典映射法(更易扩展,后续新增队伍无需修改判断逻辑)
先构造队伍与目标值的映射关系,再直接遍历匹配:
# 先定义映射规则,对应subteamA→1,subteamB→0,subteamC→2 team_map = {'subteamA': 1, 'subteamB': 0, 'subteamC': 2} # 列表推导直接生成目标序列 teamDimensions_semantic = [team_map[paramTeam] for paramTeam in mySubteams]
如果不想硬编码映射,也可以基于你的teams列表动态生成:
team_map = {teams[0]: 1, teams[1]: 0, teams[2]: 2} teamDimensions_semantic = [team_map[paramTeam] for paramTeam in mySubteams]
方案2:多条件if-else直接写在列表推导内
如果不想额外定义字典,可以直接在推导式里写多分支判断:
teamDimensions_semantic = [1 if paramTeam == teams[0] else 0 if paramTeam == teams[1] else 2 for paramTeam in mySubteams]
多分支三元表达式的语法规则是值1 if 条件1 else 值2 if 条件2 else 值3,按顺序判断,满足第一个条件就返回对应值,否则继续判断后续条件。
内容的提问来源于stack exchange,提问作者Noriana
相关产品推荐
相关产品推荐

