как получить максимум и минимум из списка - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть два кортежа, например

tup1 = (200,(b,5),(a,5))
tup2 = (500,(b,7),(a,3))

Сначала я хочу найти кортеж с самым высоким первым элементом, но если они совпадают, я хочу иметь кортеж с самым низким вторым элементом , Но если первые два элемента равны первым двум элементам другого кортежа, у меня должен быть кортеж с наименьшим третьим элементом. Как я могу сделать это правильно?

Для этого примера результат должен быть tup_end = (500,(b,7),(a,3)), потому что первый элемент tup2 больше, чем у tup.

, если
tup1 = (200,(b,5),(a,5)) tup2 = (200,(b,7),(a,3))
результат должен быть tup_end = (200,(b,5),(a,5)), потому что первые элементы tup1 и tup2 равны, но второй элемент tup1 меньше, чем у tup2

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

Вы можете использовать min(..., key=function) с функцией, которая создает элемент с отрицательным первым значением, а затем вы должны найти наименьшее -first и наименьшее другие значения - вместо самого большого значения first и наименьших других значений - так Вы можете использовать min() для всех значений в кортеже

def create(item):
    first = item[0]
    rest = item[1:]
    return (-first, *rest)

a = 0
b = 0

tup1 = (200, (b,5), (a,5))
tup2 = (500, (b,7), (a,3))

tup_end = min([tup1, tup2], key=create)
print(tup_end)

tup1 = (200,(b,5),(a,5))
tup2 = (200,(b,7),(a,3))

tup_end = min([tup1, tup2], key=create)
print(tup_end)

Результат

(500, (0, 7), (0, 3))
(200, (0, 5), (0, 5))
0 голосов
/ 20 апреля 2020

Используйте следующий код:

lst = [2, 6, 8, 4, 3] # example of numeric lst

Получите максимум:

print(max(lst)) # printed 8

Получите мин:

print(min(lst)) # printed 2

Не забудьте использовать int(lst), чтобы сделать уверен, что он состоит из чисел c значений.

Вы можете использовать функции выше, чтобы помочь вам легко выполнить упражнение

Также работает с кортежами

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