Экземпляр класса не повторяется
В моем функционале я имею:
"""
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)