Нахождение минимального индекса указанного c элемента в списке кортежей - PullRequest
0 голосов
/ 27 мая 2020

У меня есть список кортежей по 3 элемента в каждом кортеже. Я ищу позицию индекса минимального значения всех третьих значений в каждом кортеже.

Вот список кортежей в качестве примера:

[(0, 3, 2), (4, 2, 6), (5, 1, 4), (2, 9, 8)]

Значение, которое я ищу, - это позиция индекса в списке 0, поскольку первый кортеж содержит минимальное значение 2 для всех третьих элементов в кортежах.

РЕДАКТИРОВАТЬ: я знаю, что могу просто взять каждое значение и поместить его в новый список, но есть ли более чистый способ сделать это?

Ответы [ 2 ]

0 голосов
/ 27 мая 2020

Вы можете создать новый список tuple_third_item_list, содержащий третий элемент из каждого кортежа в исходном списке list_item, а затем найти индекс минимального элемента из вновь созданного списка.

list_item = [(0, 3, 2), (4, 2, 6), (5, 1, 4), (2, 9, 8)]
tuple_third_item_list = [ i[2] for i in list_item]
min_element = min(tuple_third_item_list)
min_element_index = tuple_third_item_list.index(min_element)
print(min_element_index)

min_element_index дает индекс минимального значения среди всех третьих значений из каждого кортежа.

0 голосов
/ 27 мая 2020

numpy предоставляет очень элегантное решение для этого.

ls = [(0, 3, 2), (4, 2, 6), (5, 1, 4), (2, 9, 8)]
ar = np.array(ls)
np.argmin(ar[:,2])

Дает вам

0

Изменить:

Если ваш третий элемент - правильный номер а не datetime, другое возможное решение numpy будет:

arr1 = np.array([a[2] for a in ls])
np.argmin(arr1)
...