Я ноб на Python, исходя из C/C++. Я работаю с акселерометром, подключенным к Beaglebone Black. Я собираю 6 [X, Y, Z] показания акселерометра, как:Python 2.7 найти мин, макс в списке списков
calib = [[-72, -80, -673], [-31, -1673, 481], [-29, -62, 1564], [-148, 1464, 545], [-1513, -67, 539], [1350, -80, 480]]
Мне нужно найти минимум и максимум для X
, Y
и Z
из этого набора из шести измерений. код у меня есть:
max = [0] * 3
min = [0] * 3
for ndx, sample in enumerate(calib):
x, y, z = calib[ndx]
if x > max[0]:
max[0] = x
if x < min[0]:
min[0] = x
if y > max[1]:
max[1] = y
if y < min[1]:
min[1] = y
if z > max[2]:
max[2] = z
if z < min[2]:
min[2] = z
print "min", min
min [-1513, -1673, -623]
print "max", max
max [1350, 1464, 1564]
Это, кажется, работает, но только не выглядит «вещий». Должен быть более чистый способ сделать это. Любой совет?
Вы можете просто отсортировать измерения и перенести первые 3, например: 'listOfNumbers.sort() [: 3]'. Вы можете получить последние три элемента списка с помощью 'someList [-3:]'. Но я бы рекомендовал использовать 'numpy' для скорости, если вы имеете дело с числами. –
@AleksanderLidtke, который не решает независимые задачи x, y и z. – mhlester
Для сортировки по 3 критериям необходимо иметь собственный критерий. –