While finding eulidean distance, I get TypeError: unsupported operand type(s) for -: 'list' and 'list'

While finding eulidean distance, I get TypeError: unsupported operand type(s) for -: 'list' and 'list'

我收到一个错误:TypeError:不支持的操作数类型 -:'list' 和 'list' 在寻找我染色体的欧氏距离时。这是我的代码:

organisms=[canis_lupus,Drosophila_melanogaster,Felis_catus,Homo_sapiens,Mus_musculus]

def euclidean_distance(p,q):
   distance = np.linalg.norm(p-q)
   return distance

edistance = []
for i in range(len(organisms)):
  for j in range(i+1,len(organisms)):
     edistance.append(euclidean_distance(organisms[i],organisms[j]))

print(edistance) 

请注意,如果我打印生物体,每个元素基本上都是一个长度为 256 的列表。

p-q 被解释为列表减法(因为 pq 是列表),它没有定义。首先将您的列表转换为 np.arrays:

distance = np.linalg.norm(np.array(p)-np.array(q))