Как отсортировать список Python?
Я только начинаю свой путь в Python. Простите за корявость, если что.
Имею такую задачу. Вернуть список, который содержит те же элементы, что и элементы аргумента, но с обратным порядком элементов внутри каждого максимального строго возрастающего подсписка.
Пример:
[5, 7, 10, 4, 2, 7, 8, 1, 3] - аргумент функции.
[10, 7, 5, 4, 8, 7, 2, 3, 1] - то, что должна функция вернуть.
Мой код:
def reverse_ascending(items):
sort_items=sorted(items,reverse=True) #обратно-отсортированный список
list_sort_1=sort_items[::2] #получаю список с первым макс.значением
list_sort_2=sort_items[1::2] #получаю список со вторым макс.значением
print(list_sort_1+list_sort_2)
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
data = [5, 7, 10, 4, 2, 7, 8, 1, 3]
res = []
pos_s = 0
pos_f = 1
while pos_s < len(data):
# найти границы возрастающей последовательности
while pos_f < len(data) and data[pos_f] > data[pos_f - 1]:
pos_f += 1
# добавить к результату найденную последовательность в обратном порядке
part = data[pos_s:pos_f]
res += part[::-1]
pos_s, pos_f = pos_f, pos_f + 1
print(res)