Сегодня рассмотрим основные алгоритмы, которые используются со списками.
Решать данные задачи мы будем без использования встроенных методов языка Python.
# задаем список mas = [3, 5, 67, -65, 34, 21] # задаем искомое значение point = 3 # вычисляем длину списка (количество элементов) l = len(mas) for i in range(l): if mas[i] == point: print("содержит") break else: print("не содержит")
В цикле мы сравниваем каждый элемент списка с эталоном (point). Если нашлось совпадение — мы выводим соответствующее сообщение и выходим из цикла. Если элементы списка перебраны, но совпадений так и не было — срабатывает else и выполняется команда print(«не содержит»)
# задаем список mas = [3, 5, 67, -65, 34, 21] # предположим, что максимальный элемент равен mas[0] maximum = mas[0] for i in range(1, len(mas)): if mas[i] > maximum: maximum = mas[i] print(maximum)
Для поиска минимального элемента списка необходимо заменить знак на < (меньше)
Если найдутся элементы списка, большие mas[0] — значение максимума обновится. В противном случае значение максимума останется равным mas[0].
Задача: вывести номера элементов списка, которые больше своих соседей.
import random #Создадим список случайных чисел mas = [random.randint(0, 100) for i in range(20)] #Выведем его на экран print(mas) #Начиная со второго элемента массива mas[1] и до предпоследнего #сравниваем элементы списка со своими соседями for i in range(1, len(mas) - 1): if mas[i - 1] < mas[i] > mas[i + 1]: # выводим индексы подходящих элементов на экран в строку print(i, end=" ")
Задача: Найти произведение элементов списка, кратных 6 и оканчивающихся на 8. Если таких элементов нет — сообщить об этом
import random #Создадим список случайных чисел mas = [random.randint(0, 100) for i in range(20)] #Выведем его на экран print(mas) #Так как ищем произведение - присвоим переменной значение 1 p = 1 for i in range(len(mas)): if mas[i] % 6 == 0 and mas[i] % 10 == 8: p *= mas[i] #Если произведение по-прежнему ноль - значит таких элементов нет if p == 1: print("Нет таких элементов") else: print(p)
Принцип алгоритма заключается в следующем: мы меняем местами 0-ый элемент с последним, 1-ый с предпоследним и д.т.
Итого количество таких обменов будет равно половине длины списка. Иначе элементы поменяются местами по-второму кругу и вернутся в первоначальное положение.
import random #Создадим список случайных чисел mas = [random.randint(0, 100) for i in range(20)] #Выведем его на экран print(mas) l = len(mas) for i in range(l//2): mas[i], mas[l - 1 - i] = mas[l - 1 - i], mas[i] print(mas)
Как вы можете заметить — цикл выполняется l/2 раз (10/2 = 10)
Задачи для самостоятельного решения:
Настала пора написать серию мини-обучалок по решению задач ЕГЭ по информатике версии 2021 года. В…
Данная статья будет полезна для учителей информатики, которые занимаются программированием с детьми внеурочно. Опыт показывает, …
Рассмотрим набор наиболее часто встречающихся задач на программирование в школьном курсе информатики. Добавляйте свои задачи…
В прошлый раз мы разобрали первые две задачи школьного тура Всероссийской олимпиады школьников, проводимой в…
Закончился школьный тур Всероссийской олимпиады школьников. Разберем первую и вторую задачи тура, проводимого в московских…
Задача. В плацкартном вагоне 54 места, пронумерованных числами от 1 до 54. Вагон разбит на 9…