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