Генераторы списков

Задачи этого раздела нужно решать только с помощью генераторов списков [expr for x in list if condition], если явно не сказано обратного.

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