Один из важнейших аспектов операции включает в себя 2D-сканирование объекта. , что требует перебора координат x и y. Последовательность и количество циклов могут меняться с учетом различий в параметрах.
Моя цель — повысить гибкость следующего псевдокода, в идеале, если это возможно, снизить уровень вложенных циклов.< /p>
Код: Выделить всё
for x, y in zip(x_coords, y_coords):
instr.move_axes(x, y)
do_something_else_x_y()
for power in params['power_list']:
instr.set_power(power)
do_something_else_power()
for delay in params['delay_list']:
instr.set_delay(delay)
do_something_else_delay()
for pulse in params['pulse_list']:
instr.set_pulse(pulse)
do_something_else_pulse()
Следующий код проще изменить порядок элементов но, похоже, в конце требуется больше логики, чтобы инструмент не назывался ненужным.
Код: Выделить всё
for (x, y), power, delay, pulse in product(zip(x_coords, y_coords), power_list, delay_list, pulse_list):
print(x, y, power, delay, pulse)
# implement additional logic to check if x, y, power, delay, pulse etc. changed so call the instrument.
if difference_xy():
instr.move_axes(x, y)
do_something_else_x_y()
if difference_power():
instr.set_power(power)
do_something_else_power()
if difference_delay():
instr.set_delay(delay)
do_something_else_delay()
if difference_pulse():
instr.set_pulse(pulse)
do_something_else_pulse()
do_something_else()
Подробнее здесь: https://stackoverflow.com/questions/783 ... -in-python