TypeError:切片索引必须是Python 3中的整数

时间:2016-08-14 13:49:05

标签: python

我是Python的新手,因此问题,

我正在尝试切片数组并找到长度小于特定值的子数组。这是我的代码,

def main():
    a = [1, 2, 3]
    print(maxLength(a, 3))


def maxLength(a, k):
    max = 0
    currTotal = 0

    for i in enumerate(a):
        for j in enumerate(a):
            temp = a[i:i+j:1]
            currTotal += a[j]
            if currTotal < k:
                if len(temp) > max:
                    max = len(temp)

        currTotal = 0
    return max


if __name__ == '__main__':
    main()

我收到以下错误,

TypeError: slice indices must be integers or None or have an __index__ method

我不确定我对Slice做错了什么,感谢任何帮助。

2 个答案:

答案 0 :(得分:5)

当您使用enumerate时,它会为您提供一系列元组。

for i,x in enumerate(mylist):
    # i is the index
    # x is the item at that index

您正在将该元组分配给一个变量:

for i in enumerate(a):
    # i is a tuple of (index, item)

然后你试图使用i,就像它是一个整数。它不是整数。

如果您只想要一个整数,请使用:

for i in range(len(a)):
    for j in range(len(a)):
         ...

答案 1 :(得分:-1)

enumerate会返回object。这就是为什么它会给你这个错误。

如果您想遍历数组,请尝试使用range(len(a))

for i in range(len(a)):
        for j in range(len(a)):
            temp = a[i:i+j:1]
            currTotal += a[j]
            if currTotal < k:
                if len(temp) > max:
                    max = len(temp)