【问题标题】:How can I find the following from the functions under this class?如何从此类下的功能中找到以下内容?
【发布时间】:2022-01-10 13:05:45
【问题描述】:

所以我创建了一个类Calculate,我将在其中实现三个函数,number(self,r)reoccurence(self)var(self)....

number(self,r) 将计算并返回第 r 个百分位数的值 集合中的数据,其中 r 是 [0, 100) 中的整数(即不包括 100 但包括 0)。 对于这个问题,这是位置 (r/100)*len(list) 的值,列表称为self.items

例如,对于数据集合 [4, 2, 8, 7, 3, 1, 5], 第 98 个百分位值是 8,因为集合一旦排序是

[1, 2, 3, 4, 5, 7, 8] 和 b [(98/100)*7] == 6,列表中的第六个变量是8。

reoccurence(self) 将计算名为 self.items 的列表的模式

var(self) 将返回列表 self.items 的标准差...

到目前为止,这是我的代码,但还不能完全正常工作...我应该对此进行哪些更改?

class Calculate:
    def __init__(self, items):
        self.items = list(items)
    def number(self,r):
        return self.items[(r/100)*len(sorted(self.items))]
    def reoccurence(self):
        m = max([self.items.count(a) for a in self.items])
        return [x for x in self.items if self.items.count(x) == m][0] if m > 1 else None
    def var(self):
        n = len(self.items)
        mean = sum(self.items) / n
        var = sum((x - mean) ** 2 for x in self.items) / n
        std_dev = var ** 0.5
        return std_dev

我应该对我的代码进行哪些更改以确保它有效??

【问题讨论】:

    标签: python list function tuples


    【解决方案1】:

    我认为您应该在 numbers 函数中将百分位数转换为 int。它返回一个错误,因为百分位数是“浮动的”。并在 numbers 函数中对您的列表进行排序以获得预期的答案。我尝试了您的代码,您到底希望输入的类型是什么?

    【讨论】:

    • 请使用 cmets 进行讨论和分享您的想法/经验。仅当您提供明确的解决方案时才使用答案。在您的具体情况下,如果您认为您有答案,请提供更多详细信息和解释。例如,您可以在此处分享您所做的更改、进行这些更改的原因以及这些更改对输出的影响。
    【解决方案2】:

    您的 number 方法无法按预期工作,因为 (a) 您需要将百分位数设为整数,否则会引发 TypeError,(b) 您需要索引已排序的 self.items,否则将返回第 98 个百分位数列表中的最后一项,而不是第 98 个百分位的数字。

    您可以在reoccurrence 中迭代self.items 的集合以获得更好的性能。

    def number(self,r):
        return sorted(self.items)[int(r/100*len(self.items))]
    def reoccurence(self):
        return max((self.items.count(a), a) for a in set(self.items))[1] if self.items else None
    

    输出:

    c = Calculate([4, 2, 8, 7, 3, 1, 5, 2])
    print(c.number(98))    # 8
    print(c.reoccurence()) # 2
    print(c.var())         # 2.345
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-31
      • 2011-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多