У вас есть ряд проблем с вашим кодом:
- Вы
split()
a tuple
, что является ошибкой
- Вы сравниваете строки, чтобы получить лексический порядок, а не числовой
- Вы излишне нарезаете свои последовательности, которые создают ненужные дубликаты
Чтобы извлечь ваши данные и преобразовать в float
s:
y1,x1,z1,y2,x2,z2,y3,x3,z3,y4,x4,z4 = map(float, coordList.split())
list1.append((...))
...
Однако, это не очень общий подход, более общий подход состоит в том, чтобы просто сгруппировать split()
в тройки:
list1 = []
for y, x, z in zip(*[map(float, coordList.split())]*3):
list1.append((z, y, x))
Примечание. Предполагается, что Py3 в Py2 обернет вызов map(...)
с помощью iter(map(...))
.
Вы можете сохранить координаты в том же порядке и использовать key
arg для min()
, например ::
list1 = list(zip(*[map(float, coordList.split())]*3))
y, x, z = min(list1, key=lambda x: x[2])
Результат:
x, y, z # (401.0003, 190.0003, 29.0003)