У меня фиксированная длина c_long_Array (ctypes, в основном итерируемая) с координатами, сложенными слева направо. Количество координат не будет известно во время выполнения. Как только появится элемент OUT_OF_RANGE, больше не будет координат:
[x1, y1, z1, x2, y2, z2, ..., OUT_OF_RANGE_INT, OUT_OF_RANGE_INT ,OUT_OF_RANGE_INT]
Я хочу преобразовать это в список в этом формате
[(x1, y1, z1), (x2, y2, z2), ..., (xn, yn, zn)]
My текущий код выглядит следующим образом
OUT_OF_RANGE_INT = 2147483647
def parse_coordinates(raw_coordinates):
packed_list = []
i = 0
while (x := raw_coordinates[i]) != OUT_OF_RANGE_INT:
packed_list.append((x,
raw_coordinates[i + 1], # y
raw_coordinates[i + 2])) # z
i += 3
return packed_list
Это узкое место в моем приложении. Как я могу улучшить скорость этой функции?