Python - 有效范围的乘积


简介

Python 是一种流行的编程语言,以其易用性和灵活性而闻名,它提供了许多资源和模块来处理各种计算任务。 在本文中,我们将深入探讨一个具体的问题:确定 Python 代码中有效区间的乘积。 通过理解底层思想,您将获得宝贵的知识,了解如何操作区间、实施标准并收集符合某些标准的数字结果。

定义

计算可接受区间结果的概念涉及在特定边界内查找数字的乘积。 这些数字需要满足特定的条件或准则。 经常用于数学计算、数据处理和算法挑战中。 在执行任何操作之前,需要对区间进行筛选或验证。

语法

valid_ranges_product(numbers)

其中 numbers 是一个数字列表。

函数 valid_ranges_product() 接受一个参数 numeric values,它包含一组数字。 此方法循环遍历该集合,从第一个项目开始。 当元素不为零时,函数开始一个新的范围。 此函数继续将项目插入范围,直到遇到空元素或最后一个项目。 在方法完成序列后,它计算数组中元素的乘积。

算法

  • 步骤 1:开始使用一个空数组来保存非空项目的集合。

  • 步骤 2:如果当前元素不为零,则将其包含在当前组中。

  • 步骤 3:如果当前元素不为零,则将其包含在当前组中。

  • 步骤 4:如果当前值为零且当前集合不为空,则确定当前集合的乘积。

  • 步骤 5:接下来,将其包含在商品集合中。

方法

  • 方法 1:使用循环。

  • 方法 2:使用 itertools.groupby()

方法 1:使用循环

示例

def valid_ranges_product(list):
    groups = []
    current_group = []
    products = []

    for num in lst:
        if num != 0:
            current_group.append(num)
        elif current_group:
            product = 1
            for n in current_group:
                product *= n
            products.append(product)
            current_group = []

    if current_group:
        product = 1
        for n in current_group:
            product *= n
        products.append(product)

    return products

lst = [4, 9, 0, 0, 3, 4, 5, 0, 0, 4, 0]
result = valid_ranges_product(lst)
print(result)

输出

[36, 60, 4]

`valid_ranges_product` 函数以列表 `lst` 作为输入。 它提供一个数组,其中包含提供列表中有效区间的项目。 这些列表用于保存不为零的元素的集群。 当前正在处理此当前组,并且结果产品将保存在不同的数组中。

然后,此代码循环遍历给定列表 `lst` 中的每个项目 `num`。 如果当前元素不等于零,则将其添加到当前选定的组中。 但是,如果当前元素等于零并且 `现有组` 包含值。 这意味着已经发现了有效区间。 在这种情况下,程序通过遍历其元素并获取乘积来计算当前 `current_group` 的乘积结果。 然后将结果添加到 `products` 列表中。 `current_group` 重置为一个没有元素的列表。

如果输入列表以不为零的元素结束,则可能存在一个不完整的组。 为了处理这种情况,软件测试 `current_group` 是否碰巧未被占用。 如果存在,它计算正在考虑的组中剩余对象的乘积。 接下来,它将商品添加到名为 `products` 的数组中。

最终,子程序输出 `products` 列表。 它包含初始数组中合格范围的元素。

在主代码中,一个集合 lst 被赋值为值 [4, 9, 0, 0, 3, 4, 5, 0, 0, 4, 0] 列表。 下列列表描述了一系列数值数据,其中零用作分隔符以分隔不同的范围。 执行函数 valid_ranges_product 过程,提供 lst 作为输入。 最终项目清单放置在 result 变量中。 然后,display 函数显示存储在 result 中的值。

方法 2:使用 itertools.groupby()

示例

from itertools import groupby
from functools import reduce

def valid_ranges_product(lst):
    groups = [list(g) for k, g in groupby(lst, key=lambda x: x != 0) if k]
    product = [reduce(lambda x, y: x * y, group) for group in groups]
    return product

lst = [4, 9, 0, 0, 3, 4, 5, 0, 0, 4, 0]
result = valid_ranges_product(lst)
print(result)

输出

[36, 60, 4]

此代码片段在 `itertools` 模块中使用了 `groupby` 算法。 这根据主要函数组织数组中的顺序元素。 经常使用 `functools` 库的 `reduce` 操作。 此函数将指定的函数应用于可迭代对象中的每个元素,并将它们组合成一个单一值。 该程序计算输入集合中正确跨度的乘积。 让我们分析程序并全面地描述它,包括结果。

函数 `valid_ranges_product` 指定为需要列表 `lst` 作为输入参数。 此函数返回一个数组 `result`,其中包含提供列表中有效值内的计算乘积。

在函数中,`groupby` 方法用于根据它们是否等于零来对提供列表中的连续项目进行分组。 `groupby` 方法接受一个函数作为输入,该函数确定如何对对象进行分类。 `key` 参数设置为 lambda 函数 `lambda x: x != 0` 以确定分组标准。 这会生成一个组集群数组,其中每个类别包含连续的非零条目。

然后,聚合函数在列表推导式中使用,以确定从每个组相乘获得的结果。 函数 reduce 是 Python 编程语言中内置的函数,它使用一个函数,该函数指定给序列的项目并返回一个单一值。 在这种情况下,聚合函数用于确定列表推导式中每个组的结果。 lambda 函数 lambda x, y: 计算 x 和 y 的乘积用于将每个组中的项目一起相乘。 结果商品附加到产品列表中。 列表推导式 [reduce(lambda x, y: x * y, group) 在处理每个组时] 生成一个列表,其中包含给定范围内所有有效组的输出。

最后,该方法返回输出数组,其中包含源列表中有效区间内的项目。

结论

通过理解这些原则和方法,您现在有能力将它们应用于需要使用 Python 过滤和计算有效区间结果的不同情况。 通过这样做,您可以有效地解决复杂问题并使您的代码更健壮和更高效。 Python 庞大的库和模块生态系统为执行类似计算以用于您自己的项目提供了丰富的资源。 但是,理解基本原理和数学算法对于充分利用这些可用资产至关重要。

更新于: 2023-07-27

81 次查看

开启您的 职业生涯

通过完成课程获得认证

开始
广告

© . All rights reserved.