πŸ” Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ поиск ΠΏΠΎ массиву Π² Python: простой ΠΈ эффСктивный способ

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ поиск ΠΏΠΎ массиву Π² Python, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ index().

array = [1, 2, 3, 4, 5]
search_element = 3

try:
    index = array.index(search_element)
    print("Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½ Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ:", index)
except ValueError:
    print("Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ Π² массивС")

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм массив array ΠΈ опрСдСляСм элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΉΡ‚ΠΈ - search_element. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ index() для поиска ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ элСмСнта Π² массивС. Если элСмСнт Π½Π°ΠΉΠ΄Π΅Π½, ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, ΠΈΠ½Π°Ρ‡Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ValueError, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Π»ΠΎΠ²ΠΈΡ‚ΡŒ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ случая, ΠΊΠΎΠ³Π΄Π° элСмСнт Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ поиск ΠΏΠΎ массиву Π² Python?

Поиск ΠΏΠΎ массиву являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· основных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π’ языкС Python, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для выполнСния этой Π·Π°Π΄Π°Ρ‡ΠΈ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим нСсколько способов Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ поиска ΠΏΠΎ массиву.

1. Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ поиск

Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ поиск - это простой ΠΈ прямолинСйный ΠΌΠ΅Ρ‚ΠΎΠ΄ поиска ΠΏΠΎ массиву. Он ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ провСряСт ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива, начиная с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ, ΠΈ сравниваСт Π΅Π³ΠΎ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅.


def linear_search(arr, target):
    for i in range(len(arr)):
        if arr[i] == target:
            return i
    return -1

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования
arr = [7, 2, 1, 6, 4, 8]
target = 6
index = linear_search(arr, target)
print(f"ИндСкс элСмСнта {target} Π² массивС: {index}")

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ опрСдСляСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ linear_search, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ массив ΠΈ Ρ†Π΅Π»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Она ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту массива ΠΈ сравниваСт Π΅Π³ΠΎ с Ρ†Π΅Π»Π΅Π²Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Если элСмСнт Ρ€Π°Π²Π΅Π½ Ρ†Π΅Π»Π΅Π²ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ индСкс. Если элСмСнт Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½, функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ -1.

2. Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск

Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск - это эффСктивный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ поиска, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с отсортированными массивами. Он сравниваСт Ρ†Π΅Π»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с элСмСнтом Π² сСрСдинС массива. Если ΠΎΠ½ΠΎ совпадаСт, поиск Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ. Если Ρ†Π΅Π»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ мСньшС, поиск продолТаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π»Π΅Π²ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ массива. Если Ρ†Π΅Π»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ большС, поиск продолТаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΡ€Π°Π²ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ массива.


def binary_search(arr, target):
    low = 0
    high = len(arr) - 1

    while low <= high:
        mid = (low + high) // 2
        
        if arr[mid] == target:
            return mid
        
        if arr[mid] < target:
            low = mid + 1
        else:
            high = mid - 1

    return -1

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования
arr = [1, 2, 4, 6, 7, 8]
target = 6
index = binary_search(arr, target)
print(f"ИндСкс элСмСнта {target} Π² массивС: {index}")

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ опрСдСляСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ binary_search, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ отсортированный массив ΠΈ Ρ†Π΅Π»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ low ΠΈ high, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ элСмСнтов, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ выполняСм поиск. Пока Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π½Π΅ сократится Π΄ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта, ΠΌΡ‹ сравниваСм Ρ†Π΅Π»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с элСмСнтом Π² сСрСдинС Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΈ соотвСтствСнно суТаСм Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½. Если элСмСнт Π½Π°ΠΉΠ΄Π΅Π½, функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ индСкс. Если элСмСнт Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½, функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ -1.

3. ИспользованиС встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ index()

Π’ языкС Python Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ index() для выполнСния поиска ΠΏΠΎ массиву.


arr = [1, 2, 4, 6, 7, 8]
target = 6
index = arr.index(target)
print(f"ИндСкс элСмСнта {target} Π² массивС: {index}")

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ просто Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ index() Π½Π° массивС arr ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Ρ†Π΅Π»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ target Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ индСкс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ вхоТдСния Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ значСния Π² массивС.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

5 способов поиска элСмСнта Π² спискС python (ΠΏΠΈΡ‚ΠΎΠ½)

Python #21 Поиск Π² массивах

ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΎ слоТном: Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ” Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ транспонированиС Π² Python: простой ΠΈ понятный Π³Π°ΠΉΠ΄ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

πŸ” Как ΡƒΠ·Π½Π°Ρ‚ΡŒ количСство ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² массивС Python? 🐍 ΠŸΡ€ΠΎΡΡ‚Π°Ρ инструкция

πŸ–¨οΈ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ‚ Π² ΠΎΠ΄Π½Ρƒ строку ΠΏΠΈΡ‚ΠΎΠ½: простой способ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ

πŸ” Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ поиск ΠΏΠΎ массиву Π² Python: простой ΠΈ эффСктивный способ

ΠšΡ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΏΠΈΡ‚ΠΎΠ½Π°: ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈ сорСвнованиС βš”οΈ

πŸ’‘ΠšΠ°ΠΊ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΏΠΈΡ‚ΠΎΠ½: простыС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ совСты для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ программирования

πŸ” Как ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° Π² Python? Π£Π·Π½Π°ΠΉΡ‚Π΅ простыС способы!