Python zip参数#1必须支持类对象列表上的迭代

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,而不是类,

我有一个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,而不是类,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)