📜  Python – 连续子集中的最大元素

📅  最后修改于: 2022-05-13 01:55:23.834000             🧑  作者: Mango

Python – 连续子集中的最大元素

编程领域的一些经典问题来自不同的类别,其中之一是找到子集的最大值。当我们需要计算最大值并存储连续的组最大值时,这个特殊问题也很常见。让我们在Python语言中尝试不同的方法来解决这个问题。

方法 #1:使用列表理解 + max()
列表推导可用于执行此特定任务以过滤掉连续的组,而 max函数可用于获取过滤后的解决方案的最大值。

# Python3 code to demonstrate
# Maximum element in consecutive subsets
# using list comprehension + max()
  
# 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 + max()
# Maximum element in consecutive subsets
res = [ max(test_list[x : x + 3]) 
        for x in range(0, len(test_list), 3)]
  
# printing result
print("The grouped maximized list is : " + str(res))
输出 :
The original list : [4, 7, 8, 10, 12, 15, 13, 17, 14]
The grouped maximized list is : [8, 15, 17]

方法#2:使用max() + itertools.islice()
将列表切片成块的任务在这里是通过 islice 方法完成的,而常规的获取最大值的任务是通过上述方法的 max函数完成的。

# Python3 code to demonstrate
# Maximum element in consecutive subsets
# using itertools.islice() + max()
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() + max()
# Maximum element in consecutive subsets
res = [max(list(itertools.islice(test_list, i, i + 3)))
                  for i in range(0, len(test_list), 3)]
  
# printing result
print("The grouped maximized list is : " + str(res))
输出 :
The original list : [4, 7, 8, 10, 12, 15, 13, 17, 14]
The grouped maximized list is : [8, 15, 17]