πŸ’‘ Как Π½Π°ΠΉΡ‚ΠΈ подмассив Π² массивС Python: руководство с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈ объяснСниями

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ подмассив Π² массивС Π½Π° Python, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ срСза ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая провСряСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ подстроки Π² строкС.

1. ΠœΠ΅Ρ‚ΠΎΠ΄ срСза: Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ синтаксис срСза массива для получСния подмассива. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:
    
    array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    subarray = array[2:5]
    print(subarray)
    
    
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ подмассив с индСксами ΠΎΡ‚ 2 Π΄ΠΎ 4 Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ: [3, 4, 5].

2. Ѐункция ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ подстроки: Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, которая провСряСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ подстроки Π² строкС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ подмассив Π² массивС. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:
    
    array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    subarray = [3, 4, 5]

    def check_subarray(arr, sub):
        for i in range(len(arr) - len(sub) + 1):
            if arr[i:i + len(sub)] == sub:
                return True
        return False

    if check_subarray(array, subarray):
        print("Подмассив найдСн!")
    else:
        print("Подмассив нС найдСн!")
    
    
Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ провСряСм Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ подмассива [3, 4, 5] Π² массивС array. Если подмассив Π½Π°ΠΉΠ΄Π΅Π½, Ρ‚ΠΎ выводится сообщСниС "Подмассив Π½Π°ΠΉΠ΄Π΅Π½!", ΠΈΠ½Π°Ρ‡Π΅ выводится сообщСниС "Подмассив Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½!".

НадСюсь, это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ Π½Π°ΠΉΡ‚ΠΈ подмассив Π² массивС Π½Π° Python!

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

Как Π½Π°ΠΉΡ‚ΠΈ подмассив Π² массивС Python

Поиск подмассива Π² массивС являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· распространСнных Π·Π°Π΄Π°Ρ‡, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π½Π° Python. НиТС прСдставлСн ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту Π·Π°Π΄Π°Ρ‡Ρƒ.

ΠœΠ΅Ρ‚ΠΎΠ΄ 1: ИспользованиС Ρ†ΠΈΠΊΠ»ΠΎΠ²

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ способ Π½Π°ΠΉΡ‚ΠΈ подмассив Π² массивС - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:


def find_subarray(arr, sub):
    n = len(arr)
    m = len(sub)
    
    for i in range(n-m+1):
        for j in range(m):
            if arr[i+j] != sub[j]:
                break
        else:
            return i
    return -1

arr = [1, 2, 3, 4, 5, 6]
sub = [3, 4]

index = find_subarray(arr, sub)
if index != -1:
    print("Подмассив Π½Π°ΠΉΠ΄Π΅Π½ Π² ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ", index)
else:
    print("Подмассив нС найдСн")
    

ΠœΠ΅Ρ‚ΠΎΠ΄ 2: ИспользованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ NumPy

Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с числовыми массивами, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ NumPy, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ подмассив. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:


import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])
sub = np.array([3, 4])

index = np.where(np.all(np.equal(arr, sub)), True, False)
if index:
    print("Подмассив найдСн")
else:
    print("Подмассив нС найдСн")
    

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС, особСнно ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими массивами чисСл.

ΠœΠ΅Ρ‚ΠΎΠ΄ 3: ИспользованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ NumPy ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ np.where

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ способом Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой Π·Π°Π΄Π°Ρ‡ΠΈ с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ NumPy являСтся Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ np.where. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:


import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])
sub = np.array([3, 4])

index = np.where(np.convolve(arr, sub, mode='valid') == np.sum(sub))
if index[0].size > 0:
    print("Подмассив Π½Π°ΠΉΠ΄Π΅Π½ Π² ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ", index[0][0])
else:
    print("Подмассив нС найдСн")
    

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚Π°ΠΊΠΆΠ΅ являСтся эффСктивным ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΄Π°ΠΆΠ΅ с массивами, содСрТащими ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа.

Π’ΠΎΡ‚ Π²Π°ΠΌ Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π° для нахоТдСния подмассива Π² массивС Π½Π° Python. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»ΡƒΡ‡ΡˆΠ΅ всСго соотвСтствуСт вашим потрСбностям ΠΈ трСбованиям ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π²Ρ‹ смоТСтС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ, связанныС с поиском подмассивов Π² массивах Π½Π° Python.

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

Π£Ρ€ΠΎΠΊΠΈ Python - Бписки (ΠœΠ°ΡΡΠΈΠ²Ρ‹)

Π˜Π½Ρ‚Π΅Ρ€Π²ΡŒΡŽ Google. НахоТдСниС подмассива с максимальной суммой. Алгоритм Sliding Window

Π’Ρ€ΠΈ способа Π½Π°ΠΉΡ‚ΠΈ min ΠΈ max Π² массивС Π΄Π°Π½Π½Ρ‹Ρ…. ПишСм Π½Π° Python.

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

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅: ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π³Π°ΠΉΠ΄ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… 🐍

πŸ”Œ Как ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Python: простая инструкция для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

πŸ” Как ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ слоТСниС Π² Python? Π£Ρ€ΠΎΠΊΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ программистам

πŸ’‘ Как Π½Π°ΠΉΡ‚ΠΈ подмассив Π² массивС Python: руководство с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈ объяснСниями

πŸ” Поиск ΠΏΠ°ΠΏΠΊΠΈ с Ρ„Π°ΠΉΠ»ΠΎΠΌ Python: ΠΊΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ

πŸ”Ž Как Π½Π°ΠΉΡ‚ΠΈ Π½ΠΎΠΌΠ΅Ρ€ элСмСнта Π² спискС Python с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ эффСктивных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²?

πŸ›‘ Как ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅: руководство ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°