如何从 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)).
我无法从 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)).