Как трансформировать список?
Прошу помочь. Надо написать функцию transform, принимающую на входе список чисел и изменяющую его следующим образом:
- между максимальным и минимальным значениями меняет элементы на 0 (если в списке несколько одинаковых максимальных/минимальных значений, то выбрать первое встреченное)
- сортирует по возрастанию всех элементов от начала списка и до ближайшего к началу списка максимального/минимального значения (но не включая его)
Функция должна корректно обрабатывать ситуации, когда список на входе пуст, содержит один или два элемента или заполнен однородными данными. Напишите три примера использования функции, при этом в каждом примере программно проверяйте результат работы функции на правильность, например:
array = [2, 1, 3, -1, -2, -5, -3]
transform(array)
assert array == [1, 2, 3, 0, 0, -5, -3], "Пример первый"
Код:
def transform(spisok):
if len(spisok) < 3 or len(set(spisok)) == 1: # смысла в трансформации нет
spisok.sort()
return
lower = spisok.index(min(spisok))
upper = spisok.index(max(spisok))
spisok[min(lower, upper) + 1: max(lower, upper)] = [0] * (abs(upper - lower) - 1)
spisok[: spisok.index(max(spisok))] = sorted(spisok[: spisok.index(max(spisok))])
return spisok
# spisok = list(map(int, input("array = ").split(' '))) # Нужно ли это?
print("array = [2, 1, 3, -1, -2, -5, -3]")
print("transform(array)")
print("assert array == [1, 2, 3, 0, 0, -5, -3], 'Пример первый' ")
print("array = [1, 1, 1, 1, 1, 1]")
print("transform(array)")
print("assert array == [1, 1, 1, 1, 1, 1], 'Пример второй' ")
print("array = [5, 1]")
print("transform(array)")
print("array == [1, 5], 'Пример третий' ")
print("Введите новый список")
spisok = input("array = [ ")
print(transform(spisok))
Я немного исправил, сделал так, чтобы выводились примеры, а после вывода примеров должно выводиться: введите новый список, для этого нужен вызов функции, но у меня не получается это сделать. Подскажите, пожалуйста, как исправить, чтобы при вводе нового списка, он бы функцией обрабатывался и выводился?