не могу найти максимальный номер списка с подсписком в python - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть два списка:

  1. list1=[1,2,3]
  2. list2=[4,5,6]

после использования append: list1[1,2,3,[4,5,6]]

Я хочу напечатать максимальное количество list1 и sublist. Я пробовал это:

print("MAX:",max(list1))

но это не работает

Ответы [ 5 ]

1 голос
/ 23 апреля 2020

Во-первых, вы печатаете максимум что-то со ссылкой под названием «список», я вижу только «список1» и «список2». Если вы звоните по списку list1, то ошибка в том, что вы не можете сравнить int и список. Поскольку max () использует оператор "<", имейте в виду, что вы добавили list2, поэтому это последний элемент list1 или list1 [-1]. Если вы пытаетесь распечатать max1 для list1 и max для list2, напишите: </p>

print("MAX:",max(list1[0:-1]))       #passes list1 without last element    
print("MAX of SUBLIST:", max(list1[-1]))      #list2 is last element of list1

Это должно вывести max int из каждого списка, предполагая, что вы добавляете только 1 список в list1, а list2 не имеет подсписков.

Если вы пытаетесь создать один список с элементами list1 и list2, выполните следующие действия:

list1 += list2
0 голосов
/ 23 апреля 2020

IIU C, чтобы правильно найти максимум после сглаживания списка, выполните:

list1 = [1, 2, 3, [4, 5, 6]]


result = max(ei for e in list1 for ei in (e if isinstance(e, list) else [e]))
print(result)

Выход

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

Макс не работает, потому что нет теста на равенство между int и списком. Если вы хотите проверить значения int только в списке 1, вы можете сделать:

print(max([item for item in list1 if isinstance(item, int)]))
0 голосов
/ 23 апреля 2020

Не используйте append, используйте += или extend, то есть:

list1 = [1,2,3]
list2 = [4,5,6]
list1 += list2
# list1.extend(list2)

print(max(list1))
# 6

Демо

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

Итак, я вижу два простых варианта здесь. Первый из них будет использовать расширение вместо добавления. Поэтому вы должны сделать:

list1.extend(list2)

Тогда ваш список1 будет [1,2,3,4,5,6], а остальная часть вашего кода будет работать. Другим вариантом будет сделать что-то вроде:

print("MAX:{}".format(max([max(x) for x in list1]))

, что должно уменьшить подсписок до его максимального значения, и тогда вы сможете печатать. Это будет работать только в том случае, если оно вложено глубоко, как ваш пример.

...