π ΠΠ°ΠΊ Π½Π°ΠΉΡΠΈ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ Π² ΡΠΏΠΈΡΠΊΠ΅ Python? π
Π§ΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ Π² ΡΠΏΠΈΡΠΊΠ΅ Π² Python, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ min()
Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° key=abs
.
numbers = [4, 7, 2, 9, 1]
target = 5
closest_number = min(numbers, key=lambda x: abs(x - target))
print(closest_number) # ΠΡΠ²Π΅Π΄Π΅Ρ 4
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ ΡΠΈΡΠ΅Π» [4, 7, 2, 9, 1]
ΠΈ ΡΠ΅Π»Π΅Π²ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ 5
Π² min()
, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ lambda x: abs(x - target)
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠ»ΡΡΠ° Π΄Π»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΠΈΡΠ΅Π» ΠΏΠΎ ΠΈΡ
Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎΠΉ ΡΠ°Π·Π½ΠΈΡΠ΅ Ρ ΡΠ΅Π»Π΅Π²ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ. Π€ΡΠ½ΠΊΡΠΈΡ min()
Π·Π°ΡΠ΅ΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ Π½Π°ΠΉΡΠΈ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ Π² ΡΠΏΠΈΡΠΊΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python?
ΠΠΎΠ³Π΄Π° Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ ΡΠΈΡΠ»Π°ΠΌΠΈ, ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π½Π°ΠΉΡΠΈ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°. Π Python Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠ΅ΡΠΈΡΡ ΡΡΡ Π·Π°Π΄Π°ΡΡ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠΌ Π²Π°ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ΄Π°, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ.
ΠΠΎΠ΄Ρ ΠΎΠ΄ 1: ΠΡΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ
ΠΏΡΠΎΡΡΡΡ
ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π½Π°ΠΉΡΠΈ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ - ΡΡΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ ΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Ρ ΡΠ΅Π»Π΅Π²ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ abs()
Π΄Π»Ρ Π½Π°Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ΠΈ ΡΠ΅Π»Π΅Π²ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ Π²ΡΠ±Π΅ΡΠ΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ΅ΠΉ ΡΠ°Π·Π½ΠΈΡΠ΅ΠΉ ΠΈ Π²Π΅ΡΠ½Π΅ΠΌ Π΅Π³ΠΎ.
def find_nearest_number(numbers, target):
closest_number = None
min_difference = float('inf') # ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ Ρ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ
for number in numbers:
difference = abs(number - target) # Π½Π°Ρ
ΠΎΠ΄ΠΈΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΡΠ»ΠΎΠΌ ΠΈ ΡΠ΅Π»Π΅Π²ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ
if difference < min_difference:
min_difference = difference
closest_number = number
return closest_number
numbers = [4, 7, 9, 11, 13]
target = 8
nearest_number = find_nearest_number(numbers, target)
print(f"ΠΠ»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ ΠΊ {target} Π² ΡΠΏΠΈΡΠΊΠ΅ {numbers}: {nearest_number}")
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ find_nearest_number()
, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°: ΡΠΏΠΈΡΠΎΠΊ ΡΠΈΡΠ΅Π» ΠΈ ΡΠ΅Π»Π΅Π²ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ. ΠΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ closest_number
ΠΈ min_difference
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ None
ΠΈ float('inf')
ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠΈΡΠ»Ρ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΠΈ Π½Π°Ρ
ΠΎΠ΄ΠΈΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ°Π·Π½ΠΈΡΡ Ρ ΡΠ΅Π»Π΅Π²ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ. ΠΡΠ»ΠΈ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΌΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
. ΠΠΎ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ.
ΠΠΎΠ΄Ρ ΠΎΠ΄ 2: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ
Python ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ min()
, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΠΏΠΈΡΠΊΠ΅. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΊ ΡΠ΅Π»Π΅Π²ΠΎΠΌΡ ΡΠΈΡΠ»Ρ.
def find_nearest_number(numbers, target):
return min(numbers, key=lambda x: abs(x - target))
numbers = [4, 7, 9, 11, 13]
target = 8
nearest_number = find_nearest_number(numbers, target)
print(f"ΠΠ»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ ΠΊ {target} Π² ΡΠΏΠΈΡΠΊΠ΅ {numbers}: {nearest_number}")
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ find_nearest_number()
, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°: ΡΠΏΠΈΡΠΎΠΊ ΡΠΈΡΠ΅Π» ΠΈ ΡΠ΅Π»Π΅Π²ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ min()
ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ Π² Π½Π΅Π΅ ΡΠΏΠΈΡΠΎΠΊ ΡΠΈΡΠ΅Π» ΠΈ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ ΠΈ ΡΠ΅Π»Π΅Π²ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ. Π€ΡΠ½ΠΊΡΠΈΡ min()
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ΅ΠΉ ΡΠ°Π·Π½ΠΈΡΠ΅ΠΉ.
ΠΠΎΠ΄Ρ ΠΎΠ΄ 3: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ NumPy
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΠΆΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° NumPy, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΅Π΅ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ argmin()
, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Ρ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ΅ΠΉ ΡΠ°Π·Π½ΠΈΡΠ΅ΠΉ. ΠΠ°ΡΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°ΠΌΠΎ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°.
import numpy as np
def find_nearest_number(numbers, target):
index = np.abs(numbers - target).argmin()
return numbers[index]
numbers = [4, 7, 9, 11, 13]
target = 8
nearest_number = find_nearest_number(np.array(numbers), target)
print(f"ΠΠ»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ ΠΊ {target} Π² ΡΠΏΠΈΡΠΊΠ΅ {numbers}: {nearest_number}")
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ NumPy ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ find_nearest_number()
, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°: ΡΠΏΠΈΡΠΎΠΊ ΡΠΈΡΠ΅Π» ΠΈ ΡΠ΅Π»Π΅Π²ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ argmin()
Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Ρ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ΅ΠΉ ΡΠ°Π·Π½ΠΈΡΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΡΠ»ΠΎΠΌ ΠΈ ΡΠ΅Π»Π΅Π²ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π·Π½Π°Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π½Π°ΠΉΡΠΈ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π²Π°ΡΠΈΠΌ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡΠΌ ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΡΠΌ. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅ ΠΊΠΎΠ΄ ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π΅Π³ΠΎ ΠΊ ΡΠ²ΠΎΠΈΠΌ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ Π·Π°Π΄Π°ΡΠ°ΠΌ.