python-3.x 列表解析的问题

owfi6suc  于 2022-11-26  发布在  Python
关注(0)|答案(1)|浏览(172)

我的目标是创建一个以数组为参数的方法,并输出其每个子数组的min()值之和。然而,我真的不明白我的列表理解有什么问题。

class Solution(object):
    def sumSubarrayMins(self, arr):
        s = 0
        self.subarrays = [arr[i:j] for i in range(j-1,len(arr))for j in range(1,len(arr)+1)]
        for subarray in self.subarrays:
            s += min(subarray)
        return s

sol = Solution()
sol.sumSubarrayMins([3,1,2,4])

我经常尝试用python tutor调试,但在这种情况下真的没有帮助。

6za6bjd0

6za6bjd01#

您的子数组计算逻辑错误。您尝试在定义j之前,在第一个循环中使用它。请尝试以下操作:

self.subarrays = [arr[i:j] for i in range(0, len(arr)) for j in range(i+1, len(arr)+1)]

相关问题