Python中的int对象能否在函数中变得可移植?
我正试图遵循标题为“如何在Python中从头开始实现朴素贝叶斯”的内容 在博客中,这是定义函数的代码,用于按类类型分隔数据库Python中的int对象能否在函数中变得可移植?,python,int,iterable,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]]
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”对象没有属性“\uu getitem”
。那么它在函数中是如何工作的呢?不,整数在函数中或其他地方都不可编辑
但是,dataset
中的值不是整数。它们是列表;本文在下一个代码段中定义了数据集:
dataset = [[1,20,1], [2,21,0], [3,22,1]]
因此,当在数据集上迭代时,每个
向量都是这些列表中的一个([1,20,1]
,然后是[2,21,0]
,等等),并且向量[-1]
是这些列表中的最后一个值。在本例中,数据集[i]
是列表的列表:
dataset = [[1,20,1], [2,21,0], [3,22,1]]
这意味着,dataset[i]
本身就是一个列表,例如:
dataset[0] = [1,20,1]
因此,数据集[0][1]
将是1
,数据集[0]
的最后一个元素通常是整数元组,这取决于维度的数量。数据集定义在链接站点上的代码正下方,数据集=[1,20,1],[2,21,0],[3,22,1]
。这不算什么,非常感谢。这是我的错误。为了尝试这个函数,我创建了一个数据集作为整数列表,而不是列表列表。我现在明白了。谢谢你们@martijn pieters和你们所有人。