Генераторы списков
Задачи этого раздела нужно решать только с помощью генераторов списков [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}\) это тоже делитель. Найдите множество всех делителей этим способом.