如何从 python 3 中的列表中删除合数?

how to remove composite numbers from a list in python 3?

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

示例输入:

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

预期输出:

list1 = [2, 3, 7, 23]

提前致谢。

您可以使用列表理解 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)).