[英]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.