打印出列表中某个范围内的 maximum/minimum

Print out the maximum/minimum within a range in a list

我想打印出列表中多个值之间的最大数目。我还想获得列表中最大数量的顺序。例如在 list_ = [1,3,5,6,7,2,3,6,4,3,5,7,8,11,10] 内。 maximum number is 11 at the 13th order in the list。如果最大值发生不止一次,我将包括索引的第一个顺序。

list_ = [1,3,5,6,7,2,3,6,4,3,5,7,8,11,10]
max = max(list[:len(list_)])

试试下面的代码:

max_num = max(list_)
max_num_index = list_.index(max_num)

print("The maximum number is {} at the {} order in the list".format(max_num, max_num_index))

我会这样做:

list_ = [1, 3, 5, 6, 7, 2, 3, 6, 4, 3, 5, 7, 8, 11, 10, 11]

def func(lst):
    maxnum = max(lst)

    indices = [i for i, x in enumerate(lst) if x == maxnum]

    print(maxnum, indices)


func(list_[3:6])
# prints: 7 [1]; 7 - maxnum, [1] - position in [3:6] list

其中 maxnum 是最大数量,indicesmaxnum 的索引(如果有的话)。

l = [1,3,5,6,7,2,3,6,4,3,5,7,8,11,10]
m=max(l)
print(f"max number is {m} at index {l.index(m,0)}")

您希望能够在列表的子列表中搜索最大值并报告它相对于原始列表的位置。这个函数就是这样做的,returns 一个 (max_value, position) 的元组。参数 startstop 应被视为切片的上限和下限:

def max_in_range(l, start=0, stop=None):
    if stop is None:
        stop = len(l)

    m = max(l[start:stop])
    return (m, l.index(m, start, stop))


>>> l = [1, 3, 5, 6, 7, 2, 3, 6, 4, 3, 5, 7, 8, 11, 10]
>>> max_in_range(l)
(11, 13)
>>> max_in_range(l, 14)        # start from index 14
(10, 14)
>>> max_in_range(l, stop=4)    # check from beginning to position 3
(6, 3)
>>> max_in_range(l, 3, 4)
(6, 3)
>>> max_in_range(l, 3, 5)
(7, 4)
>>> max_in_range(l, 3, 6)
(7, 4)
>>> max_in_range(l, 3, -2)     # can use negative indices
(8, 12)

您可能希望在代码中处理一些边缘情况:

>>> max_in_range(l, 3, 3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in max_in_range
ValueError: max() arg is an empty sequence