在单个元组中组织嵌套元组的值

2024-10-02 18:26:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从一个特定的对象类中提取特征,并决定构建一个方法,一次提取所有特征,即调用所有特征提取方法并以元组形式返回它们,如下所示。你知道吗

def extractFeatures(self):
    if self.getLength()<=10:
        return ()
    else:
        return (self.getMean(),     # a number
            self.getStd(),     # a number
            self.getSkew(),     # a number
            self.getKurt(),     # a number
            # Many other methods here, such as:
            self.getACF(), # which returns a TUPLE of numbers...
            )

尽管如此,我还是有一些方法返回带有数字的元组,而不是单独的数字,因为我仍然在做一些测试并改变每个元组的长度,所以硬键入self.getACF()[0], self.getACF()[1], self.getACF()[2], ...不是一个好主意。你知道吗

有没有一种pythonic方法可以让这些值已经“解包”了,这样我就可以返回一个只有数字的元组,而不是数字,或者是大小不确定的嵌套元组?你知道吗


Tags: 对象方法selfnumberreturnifdef数字
1条回答
网友
1楼 · 发布于 2024-10-02 18:26:22

您可以将值的list构建为return,然后在末尾转换为元组。这允许您对单个值使用append,对元组使用extend

def extractFeatures(self):
    if self.getLength() > 10:
        out = [self.getMean(), self.getStd(), self.getSkew()]
        out.append(self.getKurt()] # single value
        out.extend(self.getACF()) # multiple values
        return tuple(out)

请注意,如果self.getLength()10或更少,则这将隐含return None。你知道吗

但是,请记住,您的调用函数现在需要确切地知道哪些数字是以什么顺序出现的。在这种情况下,另一种方法是返回字典:

return {'mean': self.getMean(), ... 'ACF': self.getACF()}

现在,调用函数可以轻松访问key所需的功能,您可以通过字典解包将这些功能作为关键字参数传递给其他函数:

def func_uses_mean_and_std(mean=None, std=None, **kwargs):
    ...

features = instance.extractFeatures()
result = func_uses_mean_and_std(**features)

相关问题 更多 >