Python-项不在列表中(但在列表中)-复制列表

Python-项不在列表中(但在列表中)-复制列表,python,Python,我正在研究一种算法,该算法使用肽排行榜,并删除没有特定“分数”的肽。我现在很难理解为什么我在删除过程中不断出现错误。我相信这可能与我复制列表有关,然后在删除过程中使用这些列表。但是,我在以前的问题中使用了相同的过程,没有问题,所以我不理解为什么这个特定实例会抛出错误 def Trim(Leaderboard,Spectra,N): Scores=[];droplist=[] for peptide in Leaderboard: Scores.append(

我正在研究一种算法,该算法使用肽排行榜,并删除没有特定“分数”的肽。我现在很难理解为什么我在删除过程中不断出现错误。我相信这可能与我复制列表有关,然后在删除过程中使用这些列表。但是,我在以前的问题中使用了相同的过程,没有问题,所以我不理解为什么这个特定实例会抛出错误

def Trim(Leaderboard,Spectra,N):
     Scores=[];droplist=[]
     for peptide in Leaderboard:
         Scores.append(LinearScore(peptide,Spectra))
     Leaderboard,Scores = zip(*sorted(zip(Leaderboard, Scores),key=lambda peptide: peptide[1], reverse=True))
     Leaderboard=list(Leaderboard);Scores=list(Scores) ### IS THIS WHERE THE PROBLEM IS????
     Cutoffscore=Scores[N-1] # Here I am finding the Score of the Nth' peptide (in sorted order)
     for peptide,score in zip(Leaderboard,Scores): # iterate through list of tuples
         if score<Cutoffscore: # if peptide score is lower than cut off score
             droplist.append(peptide) # remove that peptide from the leaderboard
     for i in droplist:
        Leaderboard.remove(i) ### ERROR THROWN HERE "Error list.remove(x), x not in list"
     return Leaderboard # then return what's left of the list
def微调(排行榜、光谱、N):
分数=[];droplist=[]
对于排行榜中的肽:
分数。附加(线性核心(肽、光谱))
排行榜,分数=zip(*排序(zip(排行榜,分数),键=λ肽:肽[1],反向=真))
排行榜=列表(排行榜);分数=列表(分数)###这就是问题所在吗????
Cutoffscore=Scores[N-1]#这里我找到了第N个肽的分数(按排序顺序)
对于肽,在zip中得分(排行榜,得分):#遍历元组列表
如果得分
是实现这一目标的更好的方法。。。也就是说,应该向后迭代droplist

for i in reversed(droplist):
    Leaderboard.remove(i)
问题是

考虑一下你的分数
[1,5,5,5,5,1]
。。。您在droplist中的索引是
[0,6]


但是一旦你弹出0。。。没有索引6。。。您的另一个索引已移到5

您是否可以发布一段数据,以便人们进行测试?是否可能您正在尝试删除已删除的内容?是否可以添加肽
您希望保留到新列表?或者你必须把它们移除?您可能需要小心将
列表
作为输入参数,然后返回它,您听说过在适当位置修改变量
?你可以看到一些你意想不到的行为。另外,在代码中用几行空行分隔不同的位,这样做看起来很不错:P我还是这么做了。。。。巨蟒不会对你撒谎。。。如果它说某个东西不在列表中,那么该东西不在该列表中你的第一个代码块(列表=[肽用于肽…]),如果我使用它,我甚至需要一个下拉列表吗?不,这会创建一个新的列表,只包含得分高于你的截止值的肽。。。
for i in reversed(droplist):
    Leaderboard.remove(i)