# 上次循环
maxscore = max(scoreinonepropose)
MaxScores.append(maxscore)
indexofMaxScore = scoreinonepropose.index(maxscore)
MaxScoreFaceProposal.append(myindexofallindexsim[indexofMaxScore])
allscoreofproposal.append(scoreinonepropose)
# 循环结束
DiffentGroups = []
for j in range(len(MaxScoreFaceProposal)):
if j == 0:
DiffentGroups.append(MaxScoreFaceProposal[j])
else:
if MaxScoreFaceProposal[j] not in DiffentGroups:
DiffentGroups.append(MaxScoreFaceProposal[j])
for diffentgroup in DiffentGroups:
num = 0
for element in diffentgroup:
for otherdiffentgroup in DiffentGroups:
if diffentgroup != otherdiffentgroup:
if element in otherdiffentgroup:
num += 1
break
if num == 0:
IsolatedProposals.append(diffentgroup)
else:
IntersectProposals.append(diffentgroup)
IntersectScores.append(MaxScores[kk]) # 这里有问题
还有一处,万一下面代码中的score值有相同的,但是list.index()只会返回第一个索引:
IntersectScoresCopy = IntersectScores.copy()
IntersectScoresCopy.sort(reverse=True)
indexesofIntersectScores = []
for IntersectScore in IntersectScoresCopy:
index = IntersectScores.index(IntersectScore) #万一有相同的score
indexesofIntersectScores.append(index)
3.我的修正如下:
DiffentGroups = []
New_MaxScores=[] #-----------------> 增加
for j in range(len(MaxScoreFaceProposal)):
if j == 0:
DiffentGroups.append(MaxScoreFaceProposal[j])
New_MaxScores.append(MaxScores[j])
else:
if MaxScoreFaceProposal[j] not in DiffentGroups:
DiffentGroups.append(MaxScoreFaceProposal[j])
New_MaxScores.append(MaxScores[j]) #-----------------> 增加
IsolatedProposals = []
IntersectProposals = []
IntersectScores = []
kk = 0 #记录DiffentGroups的索引
for diffentgroup in DiffentGroups: #对于每一个group 计算与其他group的交叉情况,如果没有交叉,正好,他就是一个实例
num = 0
for element in diffentgroup:
for otherdiffentgroup in DiffentGroups:
if diffentgroup != otherdiffentgroup:
if element in otherdiffentgroup:
num += 1
break
if num == 0:
IsolatedProposals.append(diffentgroup)
else:
IntersectProposals.append(diffentgroup)
#IntersectScores.append(MaxScores[kk]) #感觉有问题,因为diffentgroup那一步真的可能过滤调一些东西,造成索引错误
IntersectScores.append(New_MaxScores[kk])
kk += 1
# 对于存在交叉的组,按照分去重比如【0,1,2】与【1,2】
# 首先先整理一下得分---------------------------------
# IntersectScoresCopy = IntersectScores.copy()
# IntersectScoresCopy.sort(reverse=True)# 降序拍,第一个最大
# indexesofIntersectScores = []
# 找降序排后的索引,因为index只返回以一个索引,有问题!!!
# for IntersectScore in IntersectScoresCopy:
# index = IntersectScores.index(IntersectScore)
# indexesofIntersectScores.append(index) # 万一有得分一样的?
# 上方注释,只用下面的一行即可
indexesofIntersectScores = sorted(range(len(IntersectScores)), key=lambda k: IntersectScores[k], reverse=True)
# 得分整理完毕------------------------------------
IntersectScores.append(MaxScores[kk])
这里将有问题还有一处,万一下面代码中的score值有相同的,但是
list.index()
只会返回第一个索引:3.我的修正如下:
`