📜  Python - 最大连续元素百分比变化

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

Python - 最大连续元素百分比变化

有时,在使用Python列表时,我们可能会遇到需要提取连续元素的最大变化的问题。这类问题可以在数据科学等领域得到应用。让我们讨论可以执行此任务的某些方式。

方法 #1:使用循环 + zip()
上述功能的组合可以用来解决这个问题。在此,我们使用 zip() 将元素与其连续元素组合在一起。该循环用于以蛮力方式执行计算。

# Python3 code to demonstrate working of 
# Maximum consecutive elements percentage change
# Using zip() + loop
  
# initializing list
test_list = [4, 6, 7, 4, 2, 6, 2, 8]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Maximum consecutive elements percentage change
# Using zip() + loop
res = 0
for x, y in zip(test_list, test_list[1:]):
    res = max((abs(x - y) / x) * 100, res)
  
# printing result 
print("The maximum percentage change : " + str(res)) 
输出 :
The original list is : [4, 6, 7, 4, 2, 6, 2, 8]
The maximum percentage change : 300.0

方法 #2:使用递归 + max()
这是可以执行此任务的另一种方式。在此,我们使用递归而不是循环来执行此任务,在每次调用时跟踪最大值。

# Python3 code to demonstrate working of 
# Maximum consecutive elements percentage change
# Using zip() + loop
  
# helpr_fnc
def get_max_diff(test_list, curr_max = None):
    pot_max = (abs(test_list[1] - test_list[0]) / test_list[0]) * 100
    if curr_max :
        pot_max = max(curr_max, pot_max)
    if len(test_list) == 2:
        return pot_max
    return get_max_diff(test_list[1:], pot_max)
  
# initializing list
test_list = [4, 6, 7, 4, 2, 6, 2, 8]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Maximum consecutive elements percentage change
# Using zip() + loop
res = get_max_diff(test_list)
  
# printing result 
print("The maximum percentage change : " + str(res)) 
输出 :
The original list is : [4, 6, 7, 4, 2, 6, 2, 8]
The maximum percentage change : 300.0