Экземпляр класса не повторяется

В моем функционале я имею:

        """
        Iterates 300 times as attempts, each having an inner-loop
        to calculate the z of a neighboring point and returns the optimal                 
        """

        pointList = []
        max_p = None

        for attempts in range(300):

            neighborList = ( (x - d, y), (x + d, y), (x, y - d), (x, y + d) )

            for neighbor in neighborList:
                z = evaluate( neighbor[0], neighbor[1] )
                point = None
                point = Point3D( neighbor[0], neighbor[1], z)
                pointList += point
            max_p = maxPoint( pointList )
            x = max_p.x_val
            y = max_p.y_val
        return max_p

Я не перебираю свой экземпляр класса, точка, но я все же получаю:

    pointList += newPoint
TypeError: 'Point3D' object is not iterable

2 ответа

Решение

Проблема в этой строке:

pointList += point

pointList это list а также point это Point3D пример. Вы можете добавить только другую итерируемую к итерируемой.

Вы можете исправить это с помощью этого:

pointList += [point]

или же

pointList.append(point)

В вашем случае вам не нужно назначать None в point, Также вам не нужно привязывать переменную к новой точке. Вы можете добавить его прямо в список следующим образом:

pointList.append(Point3D( neighbor[0], neighbor[1], z))

Когда вы делаете следующее для list -

pointList += newPoint

Это похоже на вызов pointList.extend(newPoint) и в этом случае newPoint должен быть повторяемым, элементы которого будут добавлены в pointList,

Если вы хотите просто добавить элемент в список, вы должны использовать list.append() метод -

pointList.append(newPoint)
Другие вопросы по тегам