Как удалить составные числа из списка в 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)).

Другие вопросы по тегам