我是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做错了什么,感谢任何帮助。
答案 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)