Python – 列表中的最小产品对
有时,我们需要找到产生最小乘积的对的具体问题,这可以通过排序并获取列表的第一个和第二个元素来解决。但是在某些情况下,我们不需要改变列表的顺序并在类似列表中执行一些操作而不使用额外的空间。让我们讨论可以执行此操作的某些方式。
方法 #1:使用列表理解 + min() + combination()
+ lambda
可以使用上述函数的组合来执行此特定任务,其中我们使用列表推导来绑定所有功能,使用 min函数来获得最小乘积,组合函数在内部找到所有乘积,而 lambda函数用于计算乘积。
# Python3 code to demonstrate
# Minimum Product Pair in List
# using list comprehension + min() + combinations() + lambda
from itertools import combinations
# initializing list
test_list = [3, 4, 1, 7, 9, 1]
# printing original list
print("The original list : " + str(test_list))
# using list comprehension + min() + combinations() + lambda
# Minimum Product Pair in List
res = min(combinations(test_list, 2), key = lambda sub: sub[0] * sub[1])
# print result
print("The minimum product pair is : " + str(res))
输出 :
The original list : [3, 4, 1, 7, 9, 1]
The minimum product pair is : (1, 1)
方法 #2:使用列表理解 + nsmallest() + combination()
+ lambda
这种方法不仅可以找到单个最小值,还可以在需要时找到 k 个最小产品对,并使用 nsmallest函数而不是 min函数来实现此功能。
# Python3 code to demonstrate
# Minimum Product Pair in List
# using list comprehension + nsmallest() + combinations() + lambda
from itertools import combinations
from heapq import nsmallest
# initializing list
test_list = [3, 4, 1, 7, 9, 8]
# printing original list
print("The original list : " + str(test_list))
# using list comprehension + nsmallest() + combinations() + lambda
# Minimum Product Pair in List
res = nsmallest(2, combinations(test_list, 2), key = lambda sub: sub[0] * sub[1])
# print result
print("The minimum product pair is : " + str(res))
输出 :
The original list : [3, 4, 1, 7, 9, 8]
The minimum product pair is : [(3, 1), (4, 1)]