美文网首页Python代码阅读
Python代码阅读(第94篇):加权均值

Python代码阅读(第94篇):加权均值

作者: FelixZzzz | 来源:发表于2022-02-25 16:45 被阅读0次

    Python 代码阅读合集介绍:为什么不推荐Python初学者直接看项目源码

    本篇阅读的代码实现了计算加权均值的功能。

    本篇阅读的代码片段来自于30-seconds-of-python

    weighted_average

    def weighted_average(nums, weights):
      return sum(x * y for x, y in zip(nums, weights)) / sum(weights)
    
    # EXAMPLES
    weighted_average([1, 2, 3], [0.6, 0.2, 0.3]) # 1.72727
    

    weighted_average函数接收一个待求均值的数字列表nums和一个对应的权重列表weights,返回加权均值。

    函数使用zip()将两个列表组合提取,同时获得nums的当前值和对应的权重。再使用列表推导式迭代所有值和权重对,并将其两两相乘生成一个新的列表。最后使用sum()函数计算新列表元素的和,除以权重的和,计算出加权均值。

    zip(*iterables)创建一个聚合了来自每个可迭代对象中的元素的迭代器。返回一个元组的迭代器,其中的第i个元组包含来自每个参数序列或可迭代对象的第i个元素。 当所输入可迭代对象中最短的一个被耗尽时,迭代器将停止迭代。 当只有一个可迭代对象参数时,它将返回一个单元组的迭代器。 不带参数时,它将返回一个空迭代器。 相当于:

    def zip(*iterables):
        # zip('ABCD', 'xy') --> Ax By
        sentinel = object()
        iterators = [iter(it) for it in iterables]
        while iterators:
            result = []
            for it in iterators:
                elem = next(it, sentinel)
                if elem is sentinel:
                    return
                result.append(elem)
            yield tuple(result)
    

    相关文章

      网友评论

        本文标题:Python代码阅读(第94篇):加权均值

        本文链接:https://www.haomeiwen.com/subject/wlpmkrtx.html