即使代码看起来很干净,Python 也会给出"int is not iterable"错误



我基本上是在尝试编码倒数计数算法(使用合并排序的分治策略)。我第一次尝试在一个小数组中测试它,但我得到了以下错误:

Traceback (most recent call last):
  File "cntinv.py", line 26, in <module>
    ans = count_inversions(array)[1]
  File "cntinv.py", line 19, in count_inversions
    a, left = count_inversions(array[:mid])
  File "cntinv.py", line 19, in count_inversions
    a, left = count_inversions(array[:mid])
TypeError: 'int' object is not iterable

这是我的代码:

def count_split_inversions(a, b):
    c, cnt = [], 0
    while len(a) > 0 and len(b) > 0:
        if b[0] < a[0]:
            c.append(b.pop(0))
            cnt += len(a)
        else:
            c.append(a.pop(0))
    if len(a) > 0:
        c.extend(a)
    else:
        c.extend(b)
    return(c, cnt)
def count_inversions(array):
    n = len(array)
    if n <= 1: return(0)
    mid = n // 2
    a, left = count_inversions(array[:mid])
    b, right = count_inversions(array[mid:])
    c, split = count_split_inversions(a, b)
    return(c, left + right + split)
array = [1, 3, 5, 2, 4, 6]
ans = count_inversions(array)[1]
print("The answer is:", str(ans))

在错误信息的帮助下,我找不到错误。所以,如果你能帮我指出我的错误,我将不胜感激。

提前感谢。:)

如果n <= 0count_inversions()返回0,而不是元组:

def count_inversions(array):
    ...
    if n <= 1: return(0)
    ...

由于调用函数需要一个元组,因此会导致错误。

相关内容

最新更新