Ошибка возникает потому, что ваш max
эффективно работает со списком целых чисел [0, 2, -3, 5]
, а index
выполняет поиск в списке e_object
с.Существует несколько способов решения этой проблемы.
Самый простой способ - просто max
вернуть индекс:
max_array = [max(range(len(a)), key=lambda x: a[x].x) for a in array]
Это очень похоже на использование numpy
's argmax
, но без интенсивного импорта и промежуточных выделений памяти.Обратите внимание, что эта версия не требует двух проходов по каждому списку, так как вы не вызываете index
по результату max
.
Более долгосрочным решением было бы добавить соответствующие методы сравнения, например__eq__
и __gt__
/ __lt__
до e_object
класса.