Mendapatkan n elemen senarai dalam susunan daripada nilai terbesar dan terkecil dalam Python

Perniagaan

Jika anda ingin mendapatkan n elemen senarai (tatasusunan) mengikut susunan daripada nilai terbesar atau terkecil dalam Python, dan n=1, anda boleh menggunakan fungsi terbina dalam berikut.

  • max()
  • min()

Jika n>1, terdapat dua cara untuk mengisih senarai atau menggunakan modul heapq pustaka standard.

  • Dapatkan nilai maksimum dan minimum:max(),min()
  • Dapatkan n elemen dalam susunan nilai maksimum dan minimum:menyusun
  • Dapatkan n elemen dalam susunan nilai maksimum dan minimum:heapqModul

Jika bilangan elemen yang akan diambil adalah besar, adalah lebih cekap untuk mengisihnya dahulu menggunakan sorted() atau sort(), dan jika nombornya kecil, nargest() dan nsmallest() modul heapq adalah lebih cekap.

Untuk mendapatkan indeks nilai maksimum dan minimum, gunakan max(), min() dan index().

Dapatkan nilai maksimum dan minimum:max(),min()

Untuk mendapatkan elemen maksimum dan minimum senarai, gunakan fungsi terbina dalam max() dan min().

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

print(max(l))
# 23

print(min(l))
# -10

Dapatkan n elemen dalam susunan nilai maksimum dan minimum: Isih

Jika anda ingin mendapatkan n elemen senarai mengikut tertib daripada nilai terbesar atau terkecil, kaedah pertama ialah mengisih (mengisih) senarai.

Untuk mengisih senarai, gunakan fungsi terbina dalam sorted() atau kaedah sort() senarai. sorted() mengembalikan senarai diisih baharu, manakala sort() menyusun semula senarai asal.

Dengan menukar tertib menaik/menurun dengan hujah terbalik dan memilih sebarang bilangan keping dari atas, anda boleh mendapatkan n elemen mengikut urutan daripada nilai terbesar/kecil senarai.

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]

Anda boleh menulis semuanya dalam satu baris.

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

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

Jika anda tidak keberatan menukar susunan senarai asal, anda boleh menggunakan kaedah 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]

Dapatkan n elemen dalam susunan nilai maksimum dan minimum:heapqModul

Jika anda ingin mendapatkan n elemen senarai mengikut tertib daripada nilai terbesar atau terkecil, anda boleh menggunakan modul heapq.

Gunakan fungsi berikut dalam modul heapq. Dalam kes ini, senarai asal tidak akan diubah.

  • nlargest()
  • nsmallest()

Argumen pertama ialah bilangan elemen yang akan diambil, dan argumen kedua ialah lelaran (senarai, dll.) untuk disasarkan.

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]

Seperti yang saya tulis pada mulanya, jika bilangan elemen yang akan diambil adalah besar, adalah lebih cekap untuk mengisihnya terlebih dahulu dengan sorted() atau sort(), dan jika nombornya kecil, nargest() dan nsmallest() daripada modul heapq lebih cekap.