Генераторы списков
Задачи этого раздела нужно решать только с помощью генераторов списков [expr for x in list if condition]
- Дан список чисел, верните новый список, где все элементы возведены в квадрат.
- Дан список чисел, верните новый список, в котором из исходного списка удалены все четные элементы.
- Дан список строк, верните новый список, в котором все строки превращены в целые числа
(используйте функцию
int
), но нужно проигнорировать те строки, которые не являеются числами. Например,['1', 'a', '42']
должно превратиться в[1, 42]
. Используйте методisdigit()
для строк, чтобы проверить, что строка состоит только из цифр. - Дан список, верните новый список, в котором каждый элемент повторен дважды. Например,
[1, 2, 'x']
->[1, 1, 2, 2, 'x', 'x']
- Решето эратосфена (простой, но не самый эффективный способ).
- Напишите функцию, которая по числу \(k\) и списку возвращает новый список, в котором удалены все элементы, делящиеся на \(k\).
- Дано \(n\). Создайте список
ints
чисел от 2 до \(n\) (оберните range в list). Пока список не пуст, доставайте из него первый элемент \(p\). Сохраните этот элемент в списокprimes
. Вызывайте предыдущую функцию:ints = filter_k(ints, p)
. Верните списокprimes
и проверьте, что это получились простые числа. Для реализации алгоритма вам понадобится циклwhile
.
- Дано число \(n\), создайте список из всех его положительных делителей. Для этого переберите все числа от 1 до \(n\).
- Эффективней перебирать числа от 1 до \(\sqrt{n}\), при этом, если получился делитель \(d\), то \(\frac{n}{d}\) это тоже делитель. Найдите список всех делителей этим способом.
- Проверьте число на простоту