How to find the K smallest numbers in an unsorted list Python

1 Answer

0 votes
import heapq
 
def k_smallest_numbers(lst, k):
    if not isinstance(lst, list) or not all(isinstance(x, (int, float)) for x in lst):
        raise ValueError("nums must be a list of numbers")
    if not isinstance(k, int) or k < 0:
        raise ValueError("k must be a non-negative integer")
    if k == 0:
        return []
         
    return heapq.nsmallest(k, lst)
 
 
lst = [42, 29, 90, 21, 90, 88, 37, 45]
k = 3
print(k_smallest_numbers(lst, k))
 
 
 
"""
run:
 
[21, 29, 37]
 
"""

 



answered 6 days ago by avibootz
edited 6 days ago by avibootz
...