Я не могу удалить составные числа из списка в Python 3. Можете ли вы помочь?
Пример ввода:
list1 = [2, 3, 6, 7, 14, 21, 23, 42, 46, 69, 138, 161, 322, 483]
Ожидаемый результат:
list1 = [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)).
Вы можете использовать понимание списка с all:
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]