Python - 列表中的最小乘积对
在给定的问题陈述中,我们必须在给定的列表和元组列表中找到最小乘积对。因此,我们将使用 Python 来实现代码。
理解问题
眼前的问题是从给定的列表中找到最小乘积并用 Python 创建一个程序。或者我们可以说,我们必须找到一对数字,其乘积与列表中其他对相比最小。解决此问题的方法有很多。因此,我们将使用列表和元组列表来展示此问题陈述。让我们借助一个示例来了解此问题 -
假设我们有一个列表,例如 [1, 4, 3, 5, 1, 2, 8, 9],在这个列表中,我们可以看到有很多可能的对,但我们必须找到乘积最小的对并将其显示为输出。在此示例中,存在 (1,1) 对,其中这两个项目的乘积为 1,这在所有可能的组合中都最小。
使用元组列表或元组列表
元组列表或元组列表是 Python 编程语言中的数据结构。元组列表包含多个元组作为其项目。这意味着列表中的每个元素都是一个元组。
为了理解此程序的逻辑,我们将使用 Python 的“min”函数从给定数字中获取最小值。然后,我们将使用 abs 函数给出数字的绝对值。在 abs 函数内部,我们将计算数字 a 和 b 的乘积。并将结果存储在单独的变量中。
算法
步骤 1 - 因为我们必须在给定的元组列表中找到最小乘积对,所以首先我们将创建一个名为 list_min_val 的函数,并在该函数内部,我们将传递一个名为 numbers 的参数,该参数是元组类型列表。
步骤 2 - 定义函数后,我们将使用一个变量来存储对的最小乘积,并将其命名为 min_result。并通过使用 min 和 ans 函数计算乘积和该乘积的最小值来初始化其值。
步骤 3 - 现在,我们将返回 min_result 作为结果。然后,我们将定义列表元组作为输入并打印结果的值。
示例
#Function to find the minimum, product in the given list def list_min_val(numbers): min_result = min([abs(a * b) for a, b in numbers] ) return min_result numbers = [(1, 6), (2, 4), (3, 8), (5, 1)] print("\nMinimum product from the pairs of the given tuple list:") print(list_min_val(numbers))
输出
Minimum product from the pairs of the given tuple list: 5
复杂度
在给定列表中查找最小乘积所需的时间为 O(n),其中 n 是给定元组列表的大小。因为代码仅对 numbers 进行一次迭代以计算数字的乘积。
使用列表
在这种方法中,我们将使用 Python 的列表数据结构。我们将使用 itertools 创建用于循环目的的迭代器。
算法
步骤 1 - 因为我们正在使用 python 的 itertools 模块,所以首先我们将将其导入为 itts。此模块将帮助我们创建用于循环目的的迭代器。
步骤 2 - 导入 itertools 后,我们将创建一个名为 list_min_pair 的函数,并在函数内部,我们将传递名为 numbers 的列表。
步骤 3 - 在上述函数内部,我们将使用一个变量来存储最小乘积结果。并使用 min、lambda 函数和 itts.combinations 初始化其值。借助 lambda 函数,我们将计算两个数字的乘积。“itts.combinations”函数将用于查找乘积最小值的数字组合。
步骤 4 - 现在,我们将定义一个 numbers 列表并在控制台上打印具有最小乘积的输出。
示例
# Import itertools to create iterators for efficient looping import itertools as itts # Function to get the minimum product pair def list_min_pair(numbers): min_result = min(itts.combinations(numbers, 2), key = lambda sub: sub[0] * sub[1]) return min_result numbers = [2, 4, 3, 1, 5, 6, 7, 8, 9, 10] print("\nThe actual list:") print((numbers)) print("\nPair of minimum product from the given input list:") print(list_min_pair(numbers))
输出
The actual list: [2, 4, 3, 1, 5, 6, 7, 8, 9, 10] Pair of minimum product from the given input list: (2, 1)
复杂度
使用 python 中的列表获取最小乘积对的时间复杂度为 (n^2),其中 n 是给定输入列表的大小。造成这种复杂度的原因是,我们正在对列表的元素进行组合,因此为了进行这些组合,我们需要 n^2 时间。因此,最终的时间复杂度为 O(n^2)。
结论
因此,我们已经看到了在给定列表中查找最小乘积对的不同方法。我们已经看到了 itertools 模块、min 函数、lambda 函数以及 abs 函数的使用。因此,借助这些代码,我们可以学习如何在 Python 中使用这些内置函数。