尝试追加到 Python 中的列表时出现类型错误
Type Error when trying to append to a list in Python
我正在编写代码以对测试和训练数据矩阵执行 k-NN 搜索。有问题的三个矩阵;测试数据、训练数据和矩阵,它是一列并且包含训练数据的每个行向量的相应 classes。我定义了一个函数,当给出距离矩阵的行时,将每个距离与 class 和 returns k 最小距离与它们的 classes 配对。这是函数;
def closest(distanceRow, classes, k):
labeled = []
for x in range(distanceRow.shape[0]):
# | each element in the row corresponds to the distance between one training vector
# | and one test vector. Each distance is paired with its respective training
# | vector class.
labeled.append((classes[x][0], distanceRow[x]))
# | The list of pairs is sorted based on distance.
sortedLabels = labeled.sort(key=operator.itemgetter(1))
k_values = []
# | k values are then taken from the beginning of the sorted list, giving us our k nearest
# | neighbours and their distance.
for x in range(k):
k_values.append((sortedLabels[x]))
return k_values
当我 运行 代码时,我在第
行遇到类型错误
k_values.append((sortedLabels[x]))
我得到 TypeError: 'Nonetype' object has no attribute 'getitem' 我不确定为什么。
非常感谢任何帮助!
list.sort()
returns 什么都没有(如图here)。
你必须先调用your_list.sort()
,然后再用your_list
进行操作。
我正在编写代码以对测试和训练数据矩阵执行 k-NN 搜索。有问题的三个矩阵;测试数据、训练数据和矩阵,它是一列并且包含训练数据的每个行向量的相应 classes。我定义了一个函数,当给出距离矩阵的行时,将每个距离与 class 和 returns k 最小距离与它们的 classes 配对。这是函数;
def closest(distanceRow, classes, k):
labeled = []
for x in range(distanceRow.shape[0]):
# | each element in the row corresponds to the distance between one training vector
# | and one test vector. Each distance is paired with its respective training
# | vector class.
labeled.append((classes[x][0], distanceRow[x]))
# | The list of pairs is sorted based on distance.
sortedLabels = labeled.sort(key=operator.itemgetter(1))
k_values = []
# | k values are then taken from the beginning of the sorted list, giving us our k nearest
# | neighbours and their distance.
for x in range(k):
k_values.append((sortedLabels[x]))
return k_values
当我 运行 代码时,我在第
行遇到类型错误k_values.append((sortedLabels[x]))
我得到 TypeError: 'Nonetype' object has no attribute 'getitem' 我不确定为什么。
非常感谢任何帮助!
list.sort()
returns 什么都没有(如图here)。
你必须先调用your_list.sort()
,然后再用your_list
进行操作。