Λήψη των n στοιχείων μιας λίστας με τη σειρά από τη μεγαλύτερη και τη μικρότερη τιμή σε Python

Επιχείρηση

Αν θέλετε να πάρετε τα n στοιχεία μιας λίστας (πίνακα) κατά σειρά από τη μεγαλύτερη ή τη μικρότερη τιμή στην Python, και n=1, μπορείτε να χρησιμοποιήσετε την ακόλουθη ενσωματωμένη συνάρτηση.

  • max()
  • min()

Αν n>1, υπάρχουν δύο τρόποι να ταξινομήσετε τη λίστα ή να χρησιμοποιήσετε την ενότητα heapq της τυπικής βιβλιοθήκης.

  • Λήψη της μέγιστης και της ελάχιστης τιμής: max(),min()
  • Λήψη n στοιχείων κατά σειρά μέγιστης και ελάχιστης τιμής:ταξινόμηση
  • Λήψη n στοιχείων κατά σειρά μέγιστης και ελάχιστης τιμής:heapqΕνότητα

Αν ο αριθμός των στοιχείων που πρέπει να ανακτηθούν είναι μεγάλος, είναι αποδοτικότερο να τα ταξινομηθούν πρώτα με τη χρήση της sorted() ή της sort(), ενώ αν ο αριθμός είναι μικρός, οι nargest() και nsmallest() της μονάδας heapq είναι αποδοτικότερες.

Για να λάβετε τους δείκτες της μέγιστης και της ελάχιστης τιμής, χρησιμοποιήστε 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 στοιχεία μιας λίστας κατά σειρά από τη μεγαλύτερη ή τη μικρότερη τιμή, η πρώτη μέθοδος είναι να ταξινομήσετε (sort) τη λίστα.

Για να ταξινομήσετε τη λίστα, χρησιμοποιήστε την ενσωματωμένη συνάρτηση 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 είναι πιο αποδοτικές.