Как удалить составные числа из списка в Python 3?
Я не могу удалить составные числа из списка в Python 3 . Можете ли вы помочь?
Пример ввода:
list1 = [2, 3, 6, 7, 14, 21, 23, 42, 46, 69, 138, 161, 322, 483]
Ожидаемый результат:
list1 = [2, 3, 7, 23]
Заранее спасибо.
2 ответа
Решение
Вы можете использовать понимание списка с all
:
list1 = [2, 3, 6, 7, 14, 21, 23, 42, 46, 69, 138, 161, 322, 483]
new_result = [i for i in list1 if all(i%c != 0 for c in range(2, i))]
Выход:
[2, 3, 7, 23]
Решение Ajax1234 является правильным, но вместо использования range (2, i) я бы добавил модификацию, в которой range (2, i) становится range(2, 1+math.ceil(math.sqrt(i))), где математический модуль был импортирован. Для очень больших списков это сокращает время выполнения, поскольку все составные числа имеют коэффициенты, меньшие или равные 1+math.ceil(math.sqrt(i)).