Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the acf domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/html/wp-includes/functions.php on line 6131 Python. Списки часть 2 – 100балльный репетитор

Введение

В этой части продолжим работу со списками и научимся создавать их с помощью генератора.

Термины, которые будем использовать: генератор списка, списочное выражение, итерируемый объект.

Генераторы списков (списочные выражения)

Генераторы списков в Python — это компактный и эффективный способ создания новых списков. Они представляют собой сокращённую запись цикла for с возможностью добавления условного оператора if, всё это заключено в одной строке кода. Это делает код более читаемым и часто более быстрым, чем использование традиционных циклов for для простых задач создания списков.

Забирай курсы подготовки к ОГЭ и ЕГЭ с жирной скидкой

Структура

новый_список = [выражение for элемент in итерируемый_объект]

Где новый_список — имя списка,

выражение — элемент, который будет занесён в список, вместо него может быть написано выражение, которое вычисляет значение для списка по определённой формуле,

for элемент in итерируемый_объект — конструкция обычного цикла for, определяет, какое количество элементов будет занесено в список, при этом выражение может не зависеть от элемент вовсе.

a = [x for x in range(5)]

print(a) # [0, 1, 2, 3, 4]

Здесь добавляется в список элемент x, который принимает значение из диапазона от 0 до 4.
Аналогично этот код можно было бы переписать так:
a = []

for x in range(5):

a.append(x)

print(a) # [0, 1, 2, 3, 4]

Генератор списка позволяет упрощать код и делать его компактнее.

Вместо добавления элемента из итерируемого объекта можно написать выражение, содержащее формулу:

a = [x**2 for x in range(5)]

print(a) # [0, 1, 4, 9, 16]

Этот код добавляет в список квадраты чисел из итерируемого объекта.

Генератор с условием

Функционал списочного выражения можно расширить, добавив к нему условие, при выполнении которого элемент будет добавляться.

Для этого после основной конструкции с циклом нужно написать if условие:

новый_список = [выражение for элемент in итерируемый_объект if условие]

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

a = [1, 2, 3, 4, 5, 6, 7, 8]

b = [x for x in a if x % 2 == 0]

print(b) # [2, 4, 6, 8]

Мы указали, что добавляем только такие x из a, которые являются чётными числами.

Или вот как можно определить, сколько в списке отрицательных чисел:

a = [–1, 0, 1, –2, –3, 5, –9]

b = [x for x in a if x < 0] print(len(b)) # 4 c = [1 for x in a if x < 0] print(sum(c)) # 4 print(len(c)) # 4 d = [x < 0 for x in a] print(sum(d)) # 4

В списке c мы добавляли 1 каждый раз, когда встречали отрицательное число x, это пример ещё одной вариации записи выражения в генераторе.

В списке d выражение возвращало булевый тип данных – ложь или правду, но так как в Питоне True == 1 и False == 0, то сумма элементов будет равна количеству отрицательных чисел.

Поздравляю с освоением ещё одного полезного инструмента для написания собственных программ! Чтобы закрепить навык, предлагаю тебе решить следующие задачи с использованием генератора.

Реши задачи

Задача 1: список квадратов.

Программа запрашивает число N. Создайте список квадратов чисел от 1 до N включительно, используя генератор списка. Выведите полученный список.

N = int(input())

squares = [i * i for i in range(1, N + 1)]

print(squares)

Задача 2: чётные числа в диапазоне.

Даны два числа A и B (A ≤ B). Создайте список всех чётных чисел от A до B включительно с помощью генератора списка. Выведите список.

A = int(input())

B = int(input())

even_numbers = [num for num in range(A, B + 1) if num % 2 == 0]

print(even_numbers)

Задача 3: сумма цифр чисел.

Программа запрашивает число K. Создайте список сумм цифр для каждого числа от 1 до K, используя генератор списка. Для подсчёта суммы цифр создайте вспомогательную функцию или используйте sum() со строковым представлением числа. Выведите результат.

K = int(input())

digit_sums = [sum(map(int, str(num))) for num in range(1, K + 1)]

print(digit_sums)

Задача 4: произведение пар чисел.

Дано число N. Создайте список, где каждый элемент равен произведению номера итерации (от 1 до N) на само это число. Используйте генератор списка. Выведите список.

N = int(input())

products = [i * (i + 1) for i in range(N)]

print(products)

Задача 5: список остатков от деления.

Программа запрашивает два числа: X и Y (Y > 0).

Создайте с помощью генератора списка список остатков от деления каждого числа от 0 до X на Y.

Выведите полученный список.

X = int(input())

Y = int(input())

remainders = [num % Y for num in range(X + 1)]

print(remainders)

Автор:

Быкова Оксана, методист «100балльного репетитора» по информатике ЕГЭ

Забирай курсы подготовки к ОГЭ и ЕГЭ с жирной скидкой

В 100б ты пробьёшь свой
максимум на экзаменах

наши лучшие курсы

Выбери подходящий курс и предмет, чтобы прокачаться и сдать ОГЭ на «5», а ЕГЭ на 80+ баллов

Выбрать курс

бесплатные материалы

Курсы, вебы, чек-листы — всё за 0 ₽

Забрать за 0 ₽

Интенсив по поступлению

Запишись на интенсив по поступлению, чтобы
взять из ЕГЭ максимум и попасть в вуз мечты

Записаться
В 100балльном репетиторе ты пробьёшь свой максимум на экзаменах

Преимущества подготовки
в 100балльном

10+
лет средний опыт наших преподавателей

18
выпускников сдали ЕГЭ
на 200 из 200 в 2024 году

300k+
учеников поступили в вуз мечты с нашей помощью 

14%
стобалльников России — наши выпускники

2 347
выпускника сдали ЕГЭ на 100 баллов

Преимущества подготовки в 100балльном

Запишись
на бесплатный
вводный урок

Познакомим с преподавателями и платформой

Расскажем про учёбу

Поможем поставить цель

  • 11 класс
  • 10 класс
  • 9 класс
  • 8 класс
  • 7 класс
Запись на вводный урок