如何使用从一个函数到另一个函数的列表值

时间:2019-09-10 08:20:27

标签: python

我正在尝试从用户那里获取一组值并打印max,min和mean值。但是我无法访问在insert()中获取的温度值(t [])。有人可以帮我吗?

我尝试将列表t作为另一个函数的参数传递,但它表示TypeError:非序列迭代

Original dataframe size 2352
Transpose dataframe size 3080
Dataframes are equals True

我应该获取每次传递的值列表的最大值,最小值和平均值

2 个答案:

答案 0 :(得分:0)

您需要初始化您的类,以便在每个类函数中都有可用的值。这样,您可以通过引用self来调用值:

class TempTracker:
    def __init__(self):
        self.t = list()
        self.temp = None
    def insert(self, temp):
        self.temp = temp
        self.t.append(self.temp)
        print("test", self.t)
        return self.t

    def get_max(self):
        for i in self.t:
            print(i)

    def get_min():
        pass

    def get_mean():
        pass

def main():
    a = TempTracker()
    b = TempTracker()
    temp = [1, 2]
    a.insert(temp)
    b.insert(3)
    a.get_max()

这样,您还可以使用值来初始化类,而不是使用insert:

def __init__(self, values):
        self.temp = values
        self.t.append(self.temp)

答案 1 :(得分:0)

问题出在get_max的定义中。当您将其参数设置为t且没有其他任何参数时,该t就开始与您在该类中编写的其他函数中的self一样工作。

实际上,自我也是一个标识符,仅此而已。因此,当您尝试调用a.get_max()时,您将TempTracker的实例传递给对象属性get_max,该属性随后将尝试迭代对象本身,这是不可能的,因为它不是迭代器。

您可能会做的事情:-

class TempTracker:
    t = []                  # moved t outside the insert's scope to prevent reinitialization
    def insert(self, temp):
        self.temp = temp
        self.t.append(self.temp)
        return self.t
    def get_max(self,):
        for i in self.t:
            print(i)
    def get_min(self,):
        pass
    def get_mean(self,):
        pass


a = TempTracker()
b = TempTracker()
temp = [1, 2]
a.insert(temp)
b.insert(3)
a.get_max()