我正在尝试跟随 blog post标题为如何在 Python 中从头开始实现朴素贝叶斯
从博客中,这是定义按类类型分离数据库的函数的代码。
def separateByClass(dataset):
separated = {}
for i in range(len(dataset)):
vector = dataset[i]
if (vector[-1] not in separated):
separated[vector[-1]] = []
separated[vector[-1]].append(vector)
return separated
但是当 vector
是一个 int
类型的对象时,我无法理解 vector[-1]
是如何正确使用的。如果我在函数外一个一个地尝试相同的命令,带有 vector[-1]
的代码行显然会抛出一个 TypeError: 'int' object has no attribute '__getitem__'
。那么它在函数内部是如何工作的呢?
最佳答案
不,整数不会在函数或其他地方变成可迭代的。
但是,dataset
中的值不是整数。它们是列表;该文章在下一个片段中定义了数据集:
dataset = [[1,20,1], [2,21,0], [3,22,1]]
因此,当遍历数据集时,每个 vector
都是这些列表之一(首先是 [1, 20, 1]
,然后是 [2, 21, 0]
等),vector[-1]
是每个列表中的最后一个值。
关于python - Python 中的 int 对象可以在函数内部变得可迭代吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31514933/