Python|最小连续子集
编程领域的一些经典问题来自不同的类别,其中之一是寻找最小子集。当我们需要累积最小值并存储连续的组最小值时,这个特殊问题也很常见。让我们在Python语言中尝试不同的方法来解决这个问题。
方法 #1:使用列表理解 + min()
列表推导可用于执行此特定任务以过滤掉连续的组,而 min函数可用于获得过滤后的解决方案的最小值。
# Python3 code to demonstrate
# Consecutive Subsets Minimum
# using list comprehension + min()
# initializing list
test_list = [4, 7, 8, 10, 12, 15, 13, 17, 14]
# printing original list
print("The original list : " + str(test_list))
# using list comprehension + min()
# Consecutive Subsets Minimum
res = [ min(test_list[x : x + 3]) for x in range(0, len(test_list), 3)]
# printing result
print("The grouped minimum list is : " + str(res))
输出 :
The original list : [4, 7, 8, 10, 12, 15, 13, 17, 14]
The grouped minimum list is : [4, 10, 13]
方法#2:使用min() + itertools.islice()
将列表切片成块的任务在这里通过 islice 方法完成,而获取最小值的常规任务由 min函数完成,如上述方法。
# Python3 code to demonstrate
# Consecutive Subsets Minimum
# using itertools.islice() + min()
import itertools
# initializing list
test_list = [4, 7, 8, 10, 12, 15, 13, 17, 14]
# printing original list
print("The original list : " + str(test_list))
# using itertools.islice() + min()
# Consecutive Subsets Minimum
res = [min(list(itertools.islice(test_list, i, i + 3))) for i in range(0, len(test_list), 3)]
# printing result
print("The grouped minimum list is : " + str(res))
输出 :
The original list : [4, 7, 8, 10, 12, 15, 13, 17, 14]
The grouped minimum list is : [4, 10, 13]