Skip to main content
 首页 » 编程设计

python之删除列表中所有非质数元素

2025年05月04日16lyhabc

我在 python 中有一个列表 m,我想删除 m 中所有与之前所有元素都不互质的元素。因此,如果 m=[2,3,4] 我希望输出为 [2,3]。

我尝试遍历 m 的值,但它不起作用,因为 m 的大小发生变化,然后索引值超出范围。

请您参考如下方法:

您可以使用 enumerate和 any在列表理解中并使用 fractions.gcd 函数获取每对的 gcd:

>>> from fractions import gcd 
>>> [j for i,j in enumerate(m) if not any(gcd(j,t)!=1 for t in m[:i])] 
[3, 100, 7, 11, 17] 

正如@mgilson 在评论中提到的,作为一种更有效的方式,而不是在 any 中进行简单切片,您可以使用 itertools.islice 函数。