如何从python列表中打印结果?

时间:2018-07-27 18:37:38

标签: python

我在此处搜索了stackoverflow,但是在尝试打印有问题的结果时没有成功。

代码如下:

import math


class KNNRegressao:

    def __init__(self, x, y, k=3):
        self.n_amostras = len(x)
        self.n_attrs = len(x[0])
        self.x, self.y, self.k = x, y, k

    def predict(self, amostra):
        d = {}
        for i in range(self.n_amostras):
            soma = 0
            for j in range(self.n_attrs):
                soma += math.pow(amostra[j] - self.x[i][j], 2)
            d[i] = math.sqrt(soma)
        k_vizinhos = sorted(d, key=d.get)[:self.k]
        soma = sum([self.y[indice] for indice in k_vizinhos])
        return soma / self.k


if __name__ == "main":
    entradas = [[2, 50], [4, 90], [1, 38], [5, 105], [2, 48], [6, 120], [3, 65], [4, 80], [5, 100], [3, 60]]
    saidas = [250, 490, 138, 505, 248, 612, 365, 480, 500, 360]
    knn = KNNRegressao(entradas, saidas, 3)
    resultado = []
    for entrada in entradas:
        resultado.append(knn.predict(entrada))
        print("Esperado: [%d]" % saidas)
        print("Predict: [%d]" % resultado)

我是python的新手。我想知道如何打印此结果列表,我尝试了几种方法,但我做不到。谢谢!

1 个答案:

答案 0 :(得分:2)

您省略了下划线:

if __name__ == "__main__" 

因此它从未进入if

print("Esperado: [%d]" % saidas)语句将失败,您不能以这种方式设置列表格式。您可以使用print("Esperado: [%s]" % str(saidas)),但没有太多意义,您也可以:print("Esperado:", saidas)

if __name__ == "__main__":
     entradas = [[2, 50], [4, 90], [1, 38], [5, 105], [2, 48], [6, 120], [3, 65], [4, 80], [5, 100], [3, 60]]
     saidas = [250, 490, 138, 505, 248, 612, 365, 480, 500, 360]
     knn = KNNRegressao(entradas, saidas, 3)
     resultado = []
     for entrada in entradas:
         resultado.append(knn.predict(entrada))
         print("Esperado:", saidas)
         print("Predict:" resultado)