Как удалить составные числа из списка в Python 3? - PullRequest
0 голосов
/ 28 июня 2018

Я не могу удалить составные числа из списка в Python 3. Можете ли вы помочь?

Пример ввода:

list1 = [2, 3, 6, 7, 14, 21, 23, 42, 46, 69, 138, 161, 322, 483]

Ожидаемый результат:

list1 = [2, 3, 7, 23]

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Решение Ajax1234 является правильным, но вместо использования range (2, i) я бы добавил модификацию, в которой range (2, i) становится range (2, 1 + math.ceil (math.sqrt (i))) где математический модуль был импортирован. Для очень больших списков это сокращает время выполнения, поскольку все составные числа имеют коэффициенты, меньшие или равные 1 + math.ceil (math.sqrt (i)).

0 голосов
/ 28 июня 2018

Вы можете использовать понимание списка с 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]
...