3 回答
TA贡献1744条经验 获得超4个赞
这是因为u数组没有'drugs'值,输出dke.index(grd[i])会出错!您将try语句放在错误的位置,您必须像这样更改它:
def comparedkeground(dke,grd):
correct=np.zeros(len(dke))
for i in range(len(grd)):
try:
a=dke.index(grd[i])
correct[a]=1
except:
'ValueError'
return correct
TA贡献1993条经验 获得超6个赞
如果您正在运行 python3,请尝试:
def comparedkeground(dke, grd): return [int(i in grd) for i in dke]
TA贡献1851条经验 获得超3个赞
这是因为当您的主列表中不存在该元素时,循环中会发生错误,该错误会停止当前 for 循环的执行,但尚未检查数组的其余部分,因此请将您的try catch块移动一点这个
import numpy as np
def comparedkeground(dke,grd):
correct=np.zeros(len(dke))
for i in range(len(grd)):
try:
a=dke.index(grd[i])
correct[a]=1
except:
'ValueError'
return correct
u=['Lyme-disease vaccine', 'United States', 'Lyme disease', 'Allen Steere']
u1= ['drugs', 'Lyme-disease vaccine', 'Lyme disease']
print(comparedkeground(u,u1))
输出
[ 1. 0. 1. 0.]
我将 try 块移到内部,因为如果找不到当前元素,则应在列表中搜索下一个元素,因此下一次迭代应该存在循环,因此应该在迭代本身中处理任何错误。
添加回答
举报
