繁体   English   中英

TypeError:切片索引在Python 3中必须为整数

[英]TypeError: slice indices must be integers in Python 3

我是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的处理方式有什么问题,请提供任何帮助。

使用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)):
         ...

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM