我m在python中有一个列表,我想删除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]
Run Code Online (Sandbox Code Playgroud)
另外正如@mgilson在评论中提到的更有效的方式而不是简单的切片,any你可以使用itertools.islice函数.
| 归档时间: |
|
| 查看次数: |
151 次 |
| 最近记录: |