我在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)
答案 0 :(得分:1)
您将nums
与self.nums
混淆。
当你写:
nums=list()
您正在课堂上设置变量。
当你写:
def findMin(self, nums):
您正在本地变量nums
中接收参数。
当您在接下来的两行中写下self.nums
时,您将引用实例的nums
变量,该变量已初始化为类的值{s} nums
变量,这是空列表。
因此,您基本上是对空列表进行排序,然后尝试找到它的最小值。这不会起作用,因为空列表中没有值可以找到最小值。
因此,您看到错误:
ValueError: min() arg is an empty sequence
要解决此问题,请使用nums
而不是self.nums
,因为这样您就会引用参数而不是实例字段。