найти самый длинный список в списках в Python - PullRequest
0 голосов
/ 21 ноября 2018

Я просто новичок в Python, и мне нужно распечатать списки, в которых есть минимальный и максимальный элементы в списке.

Например, если у меня есть:

 total_list = [[1, 2, 3], [1, 2, 3, 4], [1,2,3,4,5]]

Iнужно вернуть список с минимальной и максимальной длиной самого себя.Как я могу сделать это просто на языке Python?

Я пытаюсь выполнить итерацию по нему, но все, что я мог получить, это только len каждого элемента в списке

Вывод должен быть:

total_list[0] and total_list[2]

Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 21 ноября 2018
total_list = [[1, 2, 3], [1, 2, 3, 4], [1,2,3,4,5]]

print('total_list[{0}] and total_list[{1}]'.format(total_list.index(min(total_list, key=len)), total_list.index(max(total_list, key=len))))

ВЫХОД:

C:\Users\Desktop>py x.py
total_list[0] and total_list[2]
0 голосов
/ 21 ноября 2018

Использование min( iterable, key=len) ( мин / макс ) является самым простым.Если вы хотите просмотреть свой список самостоятельно, вы можете сделать это следующим образом:

tl  = [[1, 2, 3], [1, 2, 3, 4], [1,2,3,4,5]]

# init shortest and longest to 1st element of list
# use a tuple to store:  ( listdata, length, position in original list )
shortest = longest = (tl[0], len(tl[0]), 0)

# iterate over remaining elements
for pos_act,act in enumerate(tl[1:],1): # start enumerate on 1 to fix position due slicing
    # get actual length
    len_act = len(act)

    # is it larger then current largest?
    if len_act > longest[1]:
        longest = (act,len_act, pos_act)

    # is it shorter then current shortest?
    if len_act < shortest[1]:
        shortest = (act, len_act, pos_act)

print ("Shortest: {} with len {} on position {}".format(*shortest))
print ("Longest: {} with len {} on position {}".format(*longest))

Вывод:

Shortest: [1, 2, 3] with len 3 on position 0
Longest: [1, 2, 3, 4, 5] with len 5 on position 2

Доку:

0 голосов
/ 21 ноября 2018
Функции

max и min в python принимают аргумент key, который найдет максимум повторяемого значения на основе того, что определено как ключ.Итак, попробуйте это:

max(total_list, key=len)

, затем вы можете использовать total_list.index, чтобы найти эти индексы

...