Рубрики

Понимание списка Python | Трехстороннее разбиение массива вокруг заданного диапазона

Учитывая массив и диапазон [lowVal, highVal] , разделите массив вокруг диапазона так, чтобы массив был разделен на три части.
1) Все элементы меньше, чем lowVal на первом месте.
2) Далее следуют все элементы в диапазоне от низкого до высокого значения .
3) Все элементы больше чем highVal появляются в конце.
Отдельные элементы трех наборов могут появляться в любом порядке.

Примеры:

Input: arr = [1, 14, 5, 20, 4, 2, 54, 20, 87, 98, 3, 1, 32]  
        lowVal = 14, highVal = 20
Output: arr = [1, 5, 4, 2, 3, 1, 14, 20, 20, 54, 87, 98, 32]

Input: arr = [1, 14, 5, 20, 4, 2, 54, 20, 87, 98, 3, 1, 32]  
       lowVal = 20, highVal = 20       
Output: arr = [1, 14, 5, 4, 2, 3, 1, 20, 20, 54, 87, 98, 32] 

У нас есть решение этой проблемы, пожалуйста, обратитесь к разделу Трехстороннее разбиение массива по заданному диапазону Мы можем быстро решить эту проблему в Python, используя списки . Подход прост,

  1. Отдельный список состоит из трех частей: первая будет содержать элементы меньше lowVal , вторая будет содержать элементы между lowVal и highVal , третья будет содержать элементы больше highVal .
  2. Объедините все три части вместе.

# Функция для трехстороннего разделения
# массив вокруг заданного диапазона

  

def threeWay(input, lowVal, highVal):

  
# отдельный входной список из трех частей

     first = [ num for num in input if num<lowVal ]

     second = [ num for num in input if (num>=lowVal and num<=highVal) ]

     third = [ num for num in input if num>highVal ]

  
# объединить все три части

     print(first + second + third)

  
# Драйверная программа

if __name__ == "__main__":

    input = [1, 14, 5, 20, 4, 2, 54, 20, 87, 98, 3, 1, 32]

    lowVal = 14

    highVal = 20

    threeWay(input, lowVal, highVal)

Выход:

[1, 5, 4, 2, 3, 1, 14, 20, 20, 54, 87, 98, 32]

Рекомендуемые посты:

Понимание списка Python | Трехстороннее разбиение массива вокруг заданного диапазона

0.00 (0%) 0 votes