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

Python不使用itertools实现列表排列生成所有两两对阵元组

错误原因分析

你原来的代码有三个核心问题:

  • 逻辑顺序错误:你试图在teams列表还没有添加任何元素的时候,就访问teams[index]判断值,必然会触发索引越界报错
  • 循环范围错误:外层循环只遍历到len(lst)-1,会漏掉最后一个队伍作为主队的情况
  • 变量引用错误:代码里直接用了全局变量team,而不是函数接收的参数lst,复用性差

正确实现代码

def allMatches(lst):
    teams = []
    # 第一层遍历:所有可作为主队的队伍
    for home in lst:
        # 第二层遍历:所有可作为客队的队伍
        for away in lst:
            # 排除同队对阵的情况
            if home != away:
                teams.append((home, away))
    return teams

team = ["FCP", "SCP", "SLB"]
print(allMatches(team))

输出效果

运行上述代码会输出你期望的结果:
[('FCP', 'SCP'), ('FCP', 'SLB'), ('SCP', 'FCP'), ('SCP', 'SLB'), ('SLB', 'FCP'), ('SLB', 'SCP')]
完全满足n支队伍时返回n*(n-1)种对阵的要求,3支返回6种,4支返回12种。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:06:02