如何编写列表元素的嵌套循环以避免重复元素组合?
解决队伍重复对阵的问题
你的当前代码会生成所有主客场的对阵组合,包括A vs B和B vs A这种重复的对阵。要实现每支队伍只对阵一次,可以用以下两种方法:
方法一:通过索引控制遍历范围
利用列表的索引,让主场队伍的索引始终小于客场队伍的索引,这样就能避免反向对阵出现:
team=['Dragons','Wolves','Nightriders','Lords'] for i in range(len(team)): # 从i+1开始遍历,确保每对只匹配一次 for j in range(i + 1, len(team)): print(team[i], "vs", team[j])
方法二:使用itertools.combinations(推荐)
Python的itertools模块提供了combinations函数,专门用于生成无重复的元素组合,非常适合这种场景:
from itertools import combinations team=['Dragons','Wolves','Nightriders','Lords'] # 生成所有长度为2的不重复组合 for match in combinations(team, 2): print(match[0], "vs", match[1])
输出结果
两种方法都会得到以下无重复的对阵:
Dragons vs Wolves
Dragons vs Nightriders
Dragons vs Lords
Wolves vs Nightriders
Wolves vs Lords
Nightriders vs Lords
内容的提问来源于stack exchange,提问作者Nitin Yadav
相关产品推荐
相关产品推荐

