首页 > 解决方案 > IndexError:python中的列表索引超出范围异常

问题描述

我尝试用python编写一个算法,但我不明白为什么它超出范围。我真的不明白问题出在哪里这是我的代码

B = [1, 2, 3, 4]
n = 4


def b(m, i):
    if m % 2 == 0 and m > 2:
        if i < m - 1:
            return 1
        else:
            return m - 2
    else:
        return m - 1


def PERM(m):
    if m == 1:
        print(P)
    else:
        for i in range(0, m):
            PERM(m - 1)
            if i < m:
                k = P[m]
                P[m] = P[b(m, i)]
                P[b(m, i)] = k


PERM(n)

标签: pythonalgorithmpermutation

解决方案


在 for i in range(0, m): 中,循环从 0 迭代到 4,总共有 5 个索引,所以最好将 n = 4 更改为 n = 3,希望对您有所帮助:)


推荐阅读