Работа со списочными выражениями на 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 находится в последовательности.
Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
Пример более сложного 24 номера, решение в 1 строку:
Условие: Тип 24 № 40999
Текстовый файл содержит только заглавные буквы латинского алфавита (ABC...Z). Определите максимальное количество идущих подряд символов, среди которых нет ни одной буквы E и при этом не менее трёх букв A.
Для выполнения этого задания следует написать программу. Ссылка на файл, который необходимо обработать с помощью данного алгоритма.
Или решение 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)?
Ответ:
Может быть девятый номер и не решается в одну строку, но все равно красивая задача 9 номера:
Условие: Тип 9 № 27521
Откройте файл электронной таблицы, содержащей вещественные числа — результаты ежечасного измерения температуры воздуха на протяжении трёх месяцев. Файл: Задание 9
Сколько раз встречалась температура, которая равна минимальному значению?