Python — работа со списками. Основные алгоритмы при работе со списком

Сегодня рассмотрим основные алгоритмы, которые используются со списками.

  • Поиск заданного элемента в массиве (списке)
  • Поиск максимального (минимального) элемента в массиве (списке) —  не использую методы списка max и min
  • Выборка элементов массива (списка) по критерию
  • Реверс массива (списка) — не используя метод списка reverse

Решать данные задачи мы будем без использования встроенных методов языка 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)


Задачи для самостоятельного решения:

  1. Найдите произведение самого большого и самого маленького элементов списка.
  2. Дан список случайных целых чисел. Замените все нечетные числа списка нулями. И выведете их количество
  3. Заполните список случайными числами и выполните реверс для части списка между элементами с индексами a и b (включая эти элементы)
Andrey K

Share
Published by
Andrey K

Recent Posts

Решение задачи №6 и задачи №22 ЕГЭ по информатике 2021

Настала пора написать серию мини-обучалок по решению задач ЕГЭ по информатике версии 2021 года. В…

4 года ago

Внеурочное занятие по информатике. Пишем игру «Поле чудес» на Python.

Данная статья будет полезна для учителей информатики, которые занимаются программированием с детьми внеурочно. Опыт  показывает, …

5 лет ago

Основные алгоритмы в помощь школьнику. Часть 1

Рассмотрим набор наиболее часто встречающихся задач на программирование в школьном курсе информатики. Добавляйте свои задачи…

6 лет ago

Школьный тур Всероссийской олимпиады школьников по информатике 9-11 класс (2018-2019). Разбор задач. Часть 2

В прошлый раз мы разобрали первые две задачи школьного тура Всероссийской олимпиады школьников, проводимой в…

6 лет ago

Школьный тур Всероссийской олимпиады школьников по информатике 9-11 класс (2018-2019). Разбор задач. Часть 1

Закончился школьный тур Всероссийской олимпиады школьников. Разберем первую и вторую задачи тура, проводимого в московских…

6 лет ago

Школьный этап Всероссийской олимпиады школьников по информатике 2017 (9-11 классы). Задача №4. «Плацкартный вагон»

Задача. В плацкартном вагоне 54 места, пронумерованных числами от 1 до 54. Вагон разбит на 9…

7 лет ago