Найти в списке все ближайшие по значению числа к переданному числу
Задание Написать код с помощью функции, которая должна найти в списке все ближайшие по значению числа к числу x и вернуть список таких чисел. Если таких чисел нет, функция должна вернуть None
Сравнение чисел c точностью 0.00001
Мой решение
def solve(numbers, x):
L=[]
k=0.00001
item=0
while item < len(numbers):
if (abs(numbers[item]-x)) < k:
L.append(numbers[item])
item+=1
if L!=[]: print(L)
else: return None
numbers1=[float(e) for e in input().split(',')]
x1=float(input())
solve(numbers1,x1)
Код работает, но есть ли возможность записать его более правильно?
Ответы (1 шт):
Автор решения: Danis
→ Ссылка
можно так:
def solve(numbers, x):
arr=[]
k=0.00001
for el in numbers:
if abs(el - x) < k:
arr.append(el)
if arr:
return arr
numbers1=[float(e) for e in input().split(',')]
x1=float(input())
print(solve(numbers1,x1))
либо так:
def solve(numbers, x):
k=0.00001
arr = [el for el in numbers if abs(el - x) < k]
if arr:
return arr