Python – 使用 K 个元素的最大乘积
有时,在使用Python列表时,我们可能会遇到需要最大化某些数字的问题。可以有许多最大化的条件。例如,通过使用 K 个元素来最大化产品。让我们讨论可以执行此操作的某些方式。
方法 #1:使用max() + sort()
+ 列表推导
上述功能的组合可以用来解决这个问题。在此,我们执行排序,然后使用 max() 使用最佳初始或后元素提取最大值。
# Python3 code to demonstrate
# Maximum product using K elements
# using max() + sort() + list comprehension
# Initializing list
test_list = [8, 5, 9, 11, 3, 7]
# printing original list
print("The original list is : " + str(test_list))
# Initializing K
K = 3
# Maximum product using K elements
# using max() + sort() + list comprehension
test_list.sort()
res = max(test_list[0] * test_list[1] * test_list[-1], test_list[-1] * test_list[-2] * test_list[-3])
# printing result
print ("Maximum product using K elements : " + str(res))
输出 :
The original list is : [8, 5, 9, 11, 3, 7]
Maximum product using K elements : 792
方法 #2:使用max() + reduce() + combination()
+ mul + 列表推导
上述功能的组合可以用来解决这个问题。在此,我们使用组合提取每个可能的最大值,并使用 mul 来执行乘法。这可以适用于任何可能数量的 K,并且是解决此问题的推荐方法。仅适用于Python 2。
# Python code to demonstrate
# Maximum product using K elements
# using max() + reduce() + combination() + mul + list comprehension
from itertools import combinations
from operator import mul
# Initializing list
test_list = [8, 5, 9, 11, 3, 7]
# printing original list
print("The original list is : " + str(test_list))
# Initializing K
K = 4
# Maximum product using K elements
# using max() + reduce() + combination() + mul + list comprehension
res = max([reduce(mul, ele) for ele in combinations(test_list, K)])
# printing result
print ("Maximum product using K elements : " + str(res))
输出 :
The original list is : [8, 5, 9, 11, 3, 7]
Maximum product using K elements : 5544