Ошибка при нахождении минимума в списке - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь найти минимальное значение в списке кортежей только из «первых» значений, есть ли лучший способ?

Мой код:

list = [[47  2][47  3][47  4][47  5][48  1][48  2][48  3][49  1][49  2]]
_min = 1000
for tuple_value in list:
   first, second = tuple_value 
   if first < _min:
      _min = first

print(_min) # 47

Когда я что-то пытаюсь вот так:

print(min(list[0][0]))

Я получаю сообщение об ошибке:

TypeError: 'numpy.int32' object is not iterable

Ответы [ 3 ]

1 голос
/ 07 мая 2020

Если у вас есть список кортежей (которого нет в вашем сообщении, но вы указываете это в заголовке), вы можете сделать это:

l = [(2, 3), (5, 6), (12, 13)]
min(l, key = lambda t: t[0])

Это будет l oop по кортежам и найдите минимум для первого элемента во всех кортежах.

1 голос
/ 07 мая 2020

Поскольку вы используете numpy, форма массива: nx2 , вы можете найти min, просто индексируя массив до первого столбца, если это не ndarray, вы можете преобразовать его в один, используя reshape

np.min(list[:,0])

np.min(list.reshape(-1,2)[:,0])

Я бы также не использовал ключевые слова в качестве имен переменных.

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

У вас нет запятых! Пробелы в python ничего не значат. Вы должны разделять значения запятыми в списке. Очень-очень-очень базовый c python.

Изменить: также эту проблему можно легко решить, выполнив что-то вроде min(tup[0] for tup in my_list)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...