我无法从 python 3 的列表中删除合数。你能帮忙吗?
示例输入:
list1 = [2, 3, 6, 7, 14, 21, 23, 42, 46, 69, 138, 161, 322, 483]
预期输出:
list1 = [2, 3, 7, 23]
提前致谢。
我无法从 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))。