從Python中的最大值和最小值依次獲取列表的n個元素

商業

如果要從Python中的最大值或最小值開始依次獲取列表(數組)的n個元素,並且n=1,可以使用下面的內置函數。

  • max()
  • min()

如果n>1,有兩種方式對列表進行排序或者使用標準庫的heapq模塊。

  • 獲取最大值和最小值:max(),min()
  • 按最大值和最小值的順序獲取n個元素:種類
  • 按最大值和最小值的順序獲取n個元素:heapq模塊

如果要檢索的元素數量很大,先使用sorted()或sort()排序效率更高,如果數量少,使用heapq模塊的nargest()和nsmallest()效率更高。

要獲取最大值和最小值的索引,請使用 max()、min() 和 index()。

獲取最大值和最小值:max(),min()

要獲取列表的最大和最小元素,請使用內置函數 max() 和 min()。

l = [3, 6, 7, -1, 23, -10, 18]

print(max(l))
# 23

print(min(l))
# -10

按最大值和最小值的順序獲取n個元素:排序

如果要從最大值或最小值依次獲取列表的n個元素,第一種方法是對列表進行排序(排序)。

要對列表進行排序,請使用列表的內置函數 sorted() 或 sort() 方法。 sorted() 返回一個新的排序列表,而 sort() 重新排序原始列表。

通過使用參數 reverse 切換升序/降序並從頂部選擇任意數量的切片,您可以從列表的最大/次要值中按順序獲取 n 個元素。

ld = sorted(l, reverse=True)
print(ld)
# [23, 18, 7, 6, 3, -1, -10]

print(ld[:3])
# [23, 18, 7]

la = sorted(l)
print(la)
# [-10, -1, 3, 6, 7, 18, 23]

print(la[:3])
# [-10, -1, 3]

您可以將它們全部寫在一行中。

print(sorted(l, reverse=True)[:3])
# [23, 18, 7]

print(sorted(l)[:3])
# [-10, -1, 3]

如果您不介意更改原始列表的順序,可以使用 sort() 方法。

print(l)
# [3, 6, 7, -1, 23, -10, 18]

l.sort(reverse=True)
print(l[:3])
# [23, 18, 7]

print(l)
# [23, 18, 7, 6, 3, -1, -10]

l.sort()
print(l[:3])
# [-10, -1, 3]

print(l)
# [-10, -1, 3, 6, 7, 18, 23]

按最大值和最小值的順序獲取n個元素:heapq模塊

如果要從最大值或最小值開始按順序獲取列表的 n 個元素,可以使用 heapq 模塊。

在 heapq 模塊中使用以下函數。在這種情況下,不會更改原始列表。

  • nlargest()
  • nsmallest()

第一個參數是要檢索的元素的數量,第二個參數是要作為目標的迭代(列表等)。

import heapq

l = [3, 6, 7, -1, 23, -10, 18]

print(heapq.nlargest(3, l))
# [23, 18, 7]

print(heapq.nsmallest(3, l))
# [-10, -1, 3]

print(l)
# [3, 6, 7, -1, 23, -10, 18]

就像我一開始寫的,如果要檢索的元素數量很大,那麼先用sorted()或者sort()排序效率更高,如果數量少,使用nargest()和nsmallest() heapq 模塊效率更高。