Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过数组列出超出范围的索引_Python_Python 2.7 - Fatal编程技术网

Python 通过数组列出超出范围的索引

Python 通过数组列出超出范围的索引,python,python-2.7,Python,Python 2.7,我不知道怎么了。我想我可能已经超过了数组限制 def lcs(arr): if len(arr) == 0: # arr of length 0 return sumarr = [] counter = 0 sum = 0 for i in arr: if arr[i] > 0: sum = sum + arr[i] if arr[i] < 0:

我不知道怎么了。我想我可能已经超过了数组限制

    def lcs(arr):
      if len(arr) == 0:   # arr of length 0
        return
      sumarr = []
      counter = 0
      sum = 0
      for i in arr:
        if arr[i] > 0:
          sum = sum + arr[i]
        if arr[i] < 0:
          sumarr[counter] = sum
          counter += 1
      print max(sumarr)
def lcs(arr):
如果len(arr)=0:#长度为0的arr
返回
sumarr=[]
计数器=0
总和=0
对于arr中的i:
如果arr[i]>0:
总和=总和+arr[i]
如果arr[i]<0:
sumarr[计数器]=总和
计数器+=1
打印最大值(sumarr)
我得到的错误是:

      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
        File "<stdin>", line 8, in lcs
      IndexError: list index out of range
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“”,第8行,在lcs中
索引器:列表索引超出范围
# 我对代码做了一些修改

      def lcs(arr):
        if len(arr) == 0:   # arr of length 0
          return
        sumarr = []
        counter = 0
        sum = 0
        for i in arr:
          if i > 0:
            sum = sum + i
          if i < 0:
            sumarr[counter] = sum
            counter += 1
        print max(sumarr)
def lcs(arr):
如果len(arr)=0:#长度为0的arr
返回
sumarr=[]
计数器=0
总和=0
对于arr中的i:
如果i>0:
sum=sum+i
如果i<0:
sumarr[计数器]=总和
计数器+=1
打印最大值(sumarr)
然而,我得到了这个错误

      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
        File "<stdin>", line 13, in lcs
      ValueError: max() arg is an empty sequence
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“”,第13行,在lcs中
ValueError:max()arg是一个空序列

我以为我一直在更新我的sumarr[]。为什么错误告诉我我正在将一个空列表传递到max()?

当您在arr中为I执行
操作时,
I
获取数组的元素(一次一个),而不是它们的索引。在示例中,您希望将每个
arr[i]
替换为
i

使用枚举指向数组的右侧位置:

   def lcs(arr):
      if len(arr) == 0:   # arr of length 0
        return
      sumarr = []
      counter = 0
      sum = 0
      for count, i in enumerate(arr):
        if arr[count] > 0:
          sum = sum + arr[i]
        if arr[count] < 0:
          sumarr[counter] = sum
          counter += 1
      print max(sumarr)
def lcs(arr):
如果len(arr)=0:#长度为0的arr
返回
sumarr=[]
计数器=0
总和=0
对于计数,枚举中的i(arr):
如果arr[计数]>0:
总和=总和+arr[i]
如果arr[计数]<0:
sumarr[计数器]=总和
计数器+=1
打印最大值(sumarr)

如果未使用
计数
变量,使用
枚举
有什么意义?(应该有
i
而不是
arr[count]