Python中的int对象可以在函数内迭代吗?

时间:2015-07-20 11:08:04

标签: python int iterable

我正在尝试跟随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[-1]vector类型对象时,我无法理解int是如何正确使用的。如果我在函数外逐个尝试相同的命令,那么带有vector[-1]的代码行显然会抛出TypeError: 'int' object has no attribute '__getitem__'。那么它是如何在函数内部工作的?

2 个答案:

答案 0 :(得分:6)

不,整数不会在函数或其他地方变为可迭代的。

但是,dataset 中的值不是整数。他们是名单;本文定义了下一个片段中的数据集:

dataset = [[1,20,1], [2,21,0], [3,22,1]]

因此,当迭代数据集时,每个vector都是其中一个列表(首先是[1, 20, 1],然后是[2, 21, 0]等),vector[-1]是最后一个值每个清单。

答案 1 :(得分:3)

在示例中,dataset[i]是一个列表列表:

dataset = [[1,20,1], [2,21,0], [3,22,1]]

这意味着,dataset[i]本身就是一个列表,例如:

dataset[0] = [1,20,1]

dataset[0][-1] 1dataset[0]的最后一个元素。