题目要求:给定一个包含若干数字的序列A(本文以列表为例),求满足0≤a≤b<n(其中n为序列长度)的A[b] - A[a]的最大值。
编程要点:循环结构用法,切片,内置函数enumerate(),列表推导式。
参考代码:
from random import randrange
def maxDifference(lst):
# 负无穷大
diff = -float('inf')
for index, value in enumerate(lst[:-1]):
for v in lst[index+1:]:
t = v-value
if t > diff:
result = (value,v)
diff = t
return result
for _ in range(10):
print('='*20)
lst = [randrange(1,100) for _ in range(20)]
print(lst)
print(maxDifference(lst))
运行结果:
====================
[51, 41, 43, 38, 38, 38, 30, 5, 96, 84, 6, 60, 81, 77, 6, 98, 42, 33, 97, 99]
(5, 99)
====================
[41, 88, 4, 15, 99, 82, 54, 96, 66, 74, 32, 28, 21, 96, 89, 44, 42, 25, 57, 84]
(4, 99)
====================
[88, 61, 1, 87, 18, 38, 50, 71, 95, 80, 64, 21, 12, 87, 10, 86, 45, 77, 10, 1]
(1, 95)
====================
[91, 10, 84, 17, 74, 21, 95, 41, 68, 40, 31, 61, 80, 45, 91, 6, 83, 22, 76, 25]
(10, 95)
====================
[56, 92, 83, 92, 52, 75, 87, 11, 6, 87, 60, 77, 85, 24, 82, 2, 84, 44, 9, 27]
(2, 84)
====================
[36, 49, 27, 33, 57, 19, 74, 81, 46, 28, 4, 92, 7, 40, 52, 60, 14, 58, 21, 59]
(4, 92)
====================
[73, 21, 47, 44, 74, 23, 75, 11, 95, 89, 4, 26, 22, 62, 55, 36, 17, 37, 73, 57]
(11, 95)
====================
[94, 77, 42, 90, 60, 23, 57, 34, 61, 70, 80, 6, 47, 60, 12, 15, 65, 9, 36, 30]
(6, 65)
====================
[39, 25, 97, 21, 91, 54, 69, 11, 68, 54, 72, 36, 16, 52, 29, 31, 95, 74, 99, 28]
(11, 99)
====================
[53, 77, 51, 15, 87, 29, 16, 94, 79, 72, 51, 64, 2, 92, 29, 80, 32, 87, 78, 79]
(2, 92)