在python中删除列表中的素数索引位置

2024-06-11 12:16:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经为我的CS类设置了一个小任务,在这个任务中,我必须用Python编写一个方法来删除列表中主索引位置的项,直到索引50。在

我尝试生成如下所示的方法,但是当我试图在方法末尾打印列表时,它应该返回一个删除了主索引位置的值的列表,但是它只是返回完整的列表(数字1到50)。在

我的职能:

def listDelete(list):
    for i in list:
        if i %2 != 0 & i % 3 != 0:
            del list[i]
return list

我用以下方法调用函数:

^{pr2}$

我对python非常陌生,如果这是一个非常简单的修复,或者是一个明显的错误,我深表歉意,但任何帮助都将不胜感激!在


Tags: 方法in列表forreturnifdef数字
3条回答

您应该使用List类的pop方法,而不是del。为了使用pop,您需要list元素的索引,您可以使用enumerate在for循环中获取该索引:

def listDelete(list):
    for index, value in enumerate(list):
        if value % 2 != 0 and value % 3 != 0:
            list.pop(index)
    return list

print listDelete(range(1,50))

结果:

^{pr2}$

也就是说,你的逻辑并没有找到所有的素数指数,例如25不是素数,但它不能被2或3整除。在

这个怎么样?在

import numpy as np

def listDelete(list):
    for i in list:
        if (i %2 != 0 and i % 3 != 0):
            list[i] = 0
    return list[np.nonzero(list)]

你可以称之为:

^{pr2}$

您编写的代码有两个主要问题。Python作为逻辑和位与运算符,and和{}。你可能想了解一下区别。在

同样,你在一个列表上循环,并在循环中更改同一个列表,这不是一个好主意(take a look at the last example in this section)。与其更改输入列表,不如创建一个包含非素数的新列表并返回新列表?在

最后一件事,在这个问题中,你说你想删除素数索引的值,但是你检查的是列表中的值,而不是索引(我说“素数”是因为你不是真正检查素数,但我想你知道这一点)。在

相关问题 更多 >