Python zip参数#1必须支持类对象列表上的迭代
我有一个python的point类(Python36-32) 当我创建这些点的列表时Python zip参数#1必须支持类对象列表上的迭代,python,scikit-learn,Python,Scikit Learn,我有一个python的point类(Python36-32) 当我创建这些点的列表时 left, right = zip(*myListOfPoint) 我明白了 TypeError: zip argument #1 must support iteration 任何支持迭代的建议,请将方法添加到类中(该方法将从点生成x和y值): 将打印: (1, 3, 5) (2, 4, 6) 错误表明它应该是一个列表或支持迭代的东西point类如何支持迭代。它有2个double,x和yNo,而不是类,
left, right = zip(*myListOfPoint)
我明白了
TypeError: zip argument #1 must support iteration
任何支持迭代的建议,请将
方法添加到类中(该方法将从点
生成x和y值):
将打印:
(1, 3, 5)
(2, 4, 6)
错误表明它应该是一个列表或支持迭代的东西point类如何支持迭代。它有2个double,x和yNo,而不是类,zip需要一个迭代器MyListofpoint是一个默认支持迭代的列表。列表支持迭代。但你不是在压缩myListOfPoints
,而是在压缩*myListOfPoints
。*
将列表解压为一组独立的参数,以zip
。它告诉你,你要解包的列表中的元素是不可iterable的,而不是列表是不可iterable的。
class point:
def __init__(self , xPoint ,yPoint):
self.x = xPoint
self.y = yPoint
def makeMeStr(self):
return "("+str(self.x)+","+str(self.y)+")"
def __repr__(self):
return self.makeMeStr()
def __str__(self):
return self.makeMeStr()
def __iter__(self):
yield self.x
yield self.y
list_of_points = [point(1, 2), point(3, 4), point(5, 6)]
left, right = zip(*list_of_points)
print(left) # this will print all x values
print(right) # this will print all y values
(1, 3, 5)
(2, 4, 6)