#tpy Теория языка программирования Python
March 31, 2023

Работа со списочными выражениями на Python 


Немного о базовом представлении:


Списочные выражения это инструмент, позволяющий быстро и удобно обрабатывать данные используя для этого тип данных list - списки. Собирайте списочные выражения, раскрывайте файлы в список, исследуйте его содержимое и многое другое! Незаменимый помощник для нас на экзамене ЕГЭ.

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

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

Вот простой пример, как заполнить список числами из диапазона range.

Зная особенности функции range, мы можем получить список всех четных значений.

Или получить аналогичный список с использованием условия прям в списочном выражении.

С элементами, которые уходят в список (первая переменная i) мы можем производить всевозможные арифметические действия, например, получить квадраты чисел.

Даже можем получить хорошенький список вещественных чисел, что может быть полезно при решении 15 номеров экзамена с отрезками.

Часто встречается задача взятия суммы цифр из строчного значения (str)

Но что, если на вход пришла строка вида: s = "372.163dfg47,8216f4"

Наш генератор summ = sum([int(i) for i in s])
выдаст ошибку: ValueError: invalid literal for int() with base 10: ‘.’

Здесь может возникнуть ошибка, потому что функция int() не сможет преобразовать в целое число строки, которые содержат символы, отличные от цифр. В строке, которую мы использовали в примере, содержится символ, которые не могут быть преобразованы в целые числа.

Чтобы избежать этой ошибки, нам нужно сначала очистить строку от всех символов, кроме цифр, и только потом использовать функцию int(). Можно сделать это, например, с помощью метода .isdigit() и генератора списка:

Перейдем к более практичным задачам:

Это способ открыть .txt файл из 17 номера.

Довольно часто нас просят достать из полученного набора чисел среднее арифметическое из чисел с каким-то условием, например всех чисел делящихся на 6.

У нас есть возможность решать целые номера в строку, например один из типов 24 номера:

Условие: Тип 24 № 27687

Текстовый файл состоит не более чем из 106 символов X, Y и Z. Определите длину самой длинной последовательности, состоящей из символов Y. Хотя бы один символ Y находится в последовательности.

Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Ответ: 10

Пример более сложного 24 номера, решение в 1 строку:

Условие: Тип 24 № 40999

Текстовый файл содержит только заглавные буквы латинского алфавита (ABC...Z). Определите максимальное количество идущих подряд символов, среди которых нет ни одной буквы E и при этом не менее трёх букв A.

Для выполнения этого задания следует написать программу. Ссылка на файл, который необходимо обработать с помощью данного алгоритма.

Ответ: 275

Или решение 15 номера, любой из которых можно решить в строку:

Условие: Тип 15 № 34521

Обозначим через m & n поразрядную конъюнкцию неотрицательных целых чисел m и n.

Например, 14 & 5 = 1110_2 & 0101_2 = 0100_2 = 4.

Для какого наибольшего целого числа А формула

x & 51 = 0 ∨ (x & 41 = 0 → x & А = 0)

тождественно истинна (т. е. принимает значение 1 при любом неотрицательном целом значении переменной x)?

Ответ:

41

Может быть девятый номер и не решается в одну строку, но все равно красивая задача 9 номера:

Условие: Тип 9 № 27521

Откройте файл электронной таблицы, содержащей вещественные числа — результаты ежечасного измерения температуры воздуха на протяжении трёх месяцев. Файл: Задание 9

Сколько раз встречалась температура, которая равна минимальному значению?

Ответ: 1