ImageSeries
特定のパターン (xy のすべての値、z のすべての値) で画像を取得するオブジェクトを作成しようとしています。ジェネレーターをタスク リストに追加するメソッドを呼び出して、これを行うには、ジェネレーターを 2 つの for ループに通します。
しかし、私の 2 番目のタスクは、最初のタスクの最初の繰り返しの後に使い果たされてしまいます。これは私の望む結果ではありません。2 番目のタスクが最初のタスクのすべての反復を実行するようにします。
このようなパターンをプログラムする効率的な方法があるかどうか疑問に思っていました。
class ImageSeries:
tasks = []
def xy(self, position):
print(position)
yield "xy"
def z(self, position):
print(position)
yield "z"
def xy_scan(self, positions):
self.tasks.append((self.xy(pos) for pos in positions))
def z_scan(self, positions):
self.tasks.append((self.z(pos) for pos in positions))
def run(self):
for i in self.tasks[0]:
next(i)
for j in self.tasks[1]:
next(j)
def __repr__(self):
return str(self.tasks)
if __name__ == "__main__":
s = ImageSeries()
positions = [[0, 0], [100, 100], [1000, 1000]]
s.xy_scan(positions)
s.z_scan([0, 100, 1000, 10000])
現在の出力:
[0, 0]
0
100
1000
10000
[100, 100]
[1000, 1000]
期待される出力:
>>> s.run()
[0, 0]
0
100
1000
10000
[100, 100]
0
100
1000
10000
[1000, 1000]
0
100
1000
10000