🎉 Поздравляем! 🎉
Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.
PythonLib
Питон для всех
Одно целое число — количество "истинных пиков" в хребте.
1 5 2 8 3 4
2
Список (list) – это упорядоченная и изменяемая коллекция, которая может содержать элементы различных типов. Слово "изменяемая" (mutable) означает, что вы можете добавлять, удалять или изменять элементы списка уже после его создания. Списки в Python аналогичны массивам в других языках программирования, но предоставляют значительно больше гибкости и встроенных функций.
Полезный совет: Используйте списки, когда вам важен порядок элементов и когда вам может понадобиться изменять содержимое коллекции в процессе работы программы.
Список создается с помощью квадратных скобок [] или с помощью функции-конструктора list().
# Пустой список
my_list = []
# Список с несколькими элементами
my_list = [1, 2, 3, 4, 5]
# Список с элементами разных типов
my_list = [1, "hello", 3.14, True]
# Создание списка из другого итерируемого объекта, например, строки
char_list = list("Python")
print(char_list) # Вывод: ['P', 'y', 't', 'h', 'o', 'n']
Есть несколько способов получить список от пользователя.
# Способ 1: Ввод через функцию eval()
# **ВНИМАНИЕ:** Использовать eval() с пользовательским вводом КРАЙНЕ НЕБЕЗОПАСНО,
# так как это позволяет выполнить любой произвольный код.
# Используйте этот метод только в учебных целях и никогда в реальных проектах.
my_list = eval(input("Введите список в формате [1, 2, 3]: "))
print(my_list) # Вывод: [1, 2, 3]
# Способ 2: Безопасный и предпочтительный способ
# Ввод чисел через пробел
s = input("Введите числа через пробел: ") # Пользователь вводит: 1 2 3 4 5
numbers_list = s.split() # Получаем список строк: ['1', '2', '3', '4', '5']
# Чтобы работать с ними как с числами, их нужно преобразовать:
int_list = [int(num) for num in numbers_list]
print(int_list) # Вывод: [1, 2, 3, 4, 5]
Python предоставляет несколько методов для добавления элементов в список:
append(): добавляет один элемент в самый конец списка. Это самая быстрая операция по добавлению.insert(): вставляет элемент в указанную позицию (по индексу), сдвигая остальные элементы.extend(): расширяет список, добавляя в конец все элементы из другой коллекции (например, другого списка).numbers = [1, 2, 3]
# Добавление элемента в конец
numbers.append(4)
print(numbers) # Вывод: [1, 2, 3, 4]
# Вставка элемента на позицию 1
numbers.insert(1, 10)
print(numbers) # Вывод: [1, 10, 2, 3, 4]
# Добавление нескольких элементов из другого списка
numbers.extend([5, 6, 7])
print(numbers) # Вывод: [1, 10, 2, 3, 4, 5, 6, 7]
Полезный совет: Также можно объединять списки с помощью оператора +, но это создает совершенно новый список, а не изменяет существующий, в отличие от extend().
list1 = [1, 2]
list2 = [3, 4]
list3 = list1 + list2
print(list3) # Вывод: [1, 2, 3, 4]
print(list1) # Вывод: [1, 2] (остался без изменений)
Элементы списка доступны по индексу. Индексация начинается с 0 для первого элемента. Также поддерживается отрицательная индексация, где -1 — это последний элемент.
my_list = [10, 20, 30, 40, 50]
# Доступ к первому элементу
print(my_list[0]) # Вывод: 10
# Доступ к последнему элементу
print(my_list[-1]) # Вывод: 50
# Доступ к элементу по индексу 2
print(my_list[2]) # Вывод: 30
Важно: Попытка обратиться к несуществующему индексу вызовет ошибку IndexError. Всегда убеждайтесь, что индекс находится в пределах длины списка.
Вы можете легко изменять элементы списка, обратившись к ним по индексу. Это одно из ключевых отличий списков от строк, так как строки в Python неизменяемы.
my_list = [10, 20, 30, 40, 50]
my_list[1] = 25 # Заменяем элемент с индексом 1
print(my_list) # Вывод: [10, 25, 30, 40, 50]
Срезы (slices) позволяют получать части списка, создавая новый список. Синтаксис: list[start:stop:step].
start: начальный индекс (включается). Если опущен, срез начнется с начала списка.stop: конечный индекс (не включается). Если опущен, срез пойдет до конца списка.step: шаг. Если опущен, равен 1.numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# Срез с 2 по 5 индекс (элементы с индексами 2, 3, 4, 5)
sublist = numbers[2:6]
print(sublist) # Вывод: [3, 4, 5, 6]
# Срез с начала до 5 индекса
sublist = numbers[:6]
print(sublist) # Вывод: [1, 2, 3, 4, 5, 6]
# Срез с 5 индекса до конца
sublist = numbers[5:]
print(sublist) # Вывод: [6, 7, 8, 9]
# Каждый второй элемент
sublist = numbers[::2]
print(sublist) # Вывод: [1, 3, 5, 7, 9]
# Создание копии списка в обратном порядке
sublist = numbers[::-1]
print(sublist) # Вывод: [9, 8, 7, 6, 5, 4, 3, 2, 1]
Полезный совет: Срез всегда создает новый список (поверхностную копию). Это удобный способ скопировать список: new_list = old_list[:].
Списки можно перебирать с помощью цикла for.
numbers = [1, 2, 3, 4, 5]
# Способ 1: Прямой перебор (предпочтителен, если не нужен индекс)
# Этот способ более читаемый и "питонический" (Pythonic)
for number in numbers:
print(number, end=" ")
# Вывод: 1 2 3 4 5
print() # для переноса строки
# Способ 2: Перебор по индексам (когда нужен сам индекс)
for i in range(len(numbers)):
print(f"Индекс {i}, значение {numbers[i]}")
# Способ 3: Идеальный вариант, когда нужен и индекс, и значение
# Используйте встроенную функцию enumerate()
for i, number in enumerate(numbers):
print(f"Индекс {i}, значение {number}")
Очень важно помнить про диапазон функции range, если вы хотите брать за одну итерацию цикла несколько элементов, чтобы не выйти за пределы списка.
numbers = [12, 6, 2, 4, 9, 6, 10]
# Сравниваем текущий элемент со следующим
for i in range(len(numbers) - 1): # Идем до предпоследнего элемента
if numbers[i] > numbers[i+1]:
print(numbers[i], end=" ")
# Вывод: 12 6 9
Общее правило: Если в цикле вы обращаетесь к numbers[i+k], то диапазон цикла должен быть range(len(numbers) - k). Например, для обработки троек элементов (i, i+1, i+2), цикл будет for i in range(len(numbers) - 2).
numbers = [1, 2, 3, 4, 5]
# Способ 1: Через цикл и параметр end
for i in range(len(numbers)):
print(numbers[i], end=" ")
# Вывод: 1 2 3 4 5
print() # для переноса строки
# Способ 2: Более элегантный и современный
# Использование оператора "*" (распаковка списка)
print(*numbers) # по умолчанию разделитель - пробел
# Вывод: 1 2 3 4 5
# Можно указать любой другой разделитель
print(*numbers, sep=", ")
# Вывод: 1, 2, 3, 4, 5
# Считываем строку с высотами гор и преобразуем в список целых чисел
heights = list(map(int, input().split()))
# Инициализируем счетчик пиков
peak_count = 0
# Проходим по горам, исключая первую и последнюю (у них нет двух соседей)
for i in range(1, len(heights) - 1):
# Проверяем, является ли текущая гора пиком
# Пик должен быть строго выше левого и правого соседа
if heights[i] > heights[i-1] and heights[i] > heights[i+1]:
peak_count += 1 # Увеличиваем счетчик пиков
# Выводим результат
print(peak_count)
🎉 Поздравляем! 🎉
Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.
AD
Реклама
Запускаем ваш код...