2

私の機能では、次のものがあります。

        """
        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
4

2 に答える 2

7

問題は次の行です。

pointList += point

pointListlistおよびはインスタンスですpointPoint3D別の iterable を iterable に追加することしかできません。

これで修正できます:

pointList += [point]

また

pointList.append(point)

あなたの場合、に割り当てる必要はありませNonepoint。また、変数を新しいポイントにバインドする必要もありません。次のようにリストに直接追加できます。

pointList.append(Point3D( neighbor[0], neighbor[1], z))
于 2015-10-08T02:06:28.083 に答える
3

list-に対して次のことを行うと、

pointList += newPoint

の呼び出しに似ていますpointList.extend(newPoint)。この場合newPoint、要素が に追加される iterable である必要がありますpointList

単純に要素をリストに追加したい場合は、list.append()メソッドを使用する必要があります -

pointList.append(newPoint)
于 2015-10-08T02:06:41.480 に答える