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

Ana*_*udi 2 python int iterable

我正在尝试跟随一篇名为" 如何在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
Run Code Online (Sandbox Code Playgroud)

但我不明白为什么vector[-1]是正确使用时vector是一个int类型的对象.如果我在函数外逐个尝试相同的命令,那么代码行vector[-1]显然会抛出一个TypeError: 'int' object has no attribute '__getitem__'.那么它是如何在函数内部工作的?

Mar*_*ers 6

不,整数不会在函数或其他地方变得可迭代.

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

dataset = [[1,20,1], [2,21,0], [3,22,1]]
Run Code Online (Sandbox Code Playgroud)

因此,当迭代数据集时,每个vector都是这些列表中的一个([1, 20, 1]首先,然后[2, 21, 0]等),并且vector[-1]是每个列表中的最后一个值.