min()arg空序列

时间:2016-06-01 00:50:38

标签: python python-2.7

我在python中学习面向对象的概念。下面,我在其中创建了一个类和一个方法。我试图通过直接调用min()函数并通过调用类方法来找到列表的最小值 findMin()

以下代码给出了一个错误:

  

min()arg是一个空序列

请告诉我这里缺少什么。

class Solution:
    nums = list()
    def findMin(self, nums):
        self.nums.sort()
        out = min(self.nums)
        return out

x = [4,5,6,7,0,1,2]
y = Solution()

print min(x)
print y.findMin(x) 
print len(x)
print type(y)
print dir(y)

1 个答案:

答案 0 :(得分:1)

您将numsself.nums混淆。

当你写:

    nums=list()

您正在课堂上设置变量。

当你写:

    def findMin(self, nums):

您正在本地变量nums中接收参数。

当您在接下来的两行中写下self.nums时,您将引用实例的nums变量,该变量已初始化为类的值{s} nums变量,这是空列表。

因此,您基本上是对空列表进行排序,然后尝试找到它的最小值。这不会起作用,因为空列表中没有值可以找到最小值。

因此,您看到错误:

ValueError: min() arg is an empty sequence

要解决此问题,请使用nums而不是self.nums,因为这样您就会引用参数而不是实例字段。