-5

我无法从 python 3 的列表中删除合数。你能帮忙吗?

示例输入:

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

预期输出:

list1 = [2, 3, 7, 23]

提前致谢。

4

2 回答 2

0

您可以使用列表推导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]
于 2018-06-28T14:17:37.330 回答
0

Ajax1234 的解决方案是正确的,但不是使用 range(2, i),而是添加 range(2, i) 变为 range(2, 1+math.ceil(math.sqrt(i))) 的修改,其中数学模块已被导入。对于非常大的列表,这会减少执行时间,因为所有合数的因数都小于或等于 1+math.ceil(math.sqrt(i))。

于 2018-06-28T17:57:47.060 回答