Подтвердить что ты не робот

Python: длина самого длинного подсети?

Возможный дубликат:
Самый эффективный способ Pythons выбрать самую длинную строку в списке?

У меня есть список L

L = [[1,2,3],[5,7],[1,3],[77]]

Я хочу вернуть длину самого длинного подсписок без необходимости прокручивать их, в этом случае 3, потому что [1,2,3] - длина 3, и это самый длинный из четырех подписок. Я пробовал len (max (L)), но это не делает то, что я хочу. Любой способ сделать это или это цикл мой единственный способ?

4b9b3361

Ответ 1

max(L,key=len) предоставит вам объект с самой длинной длиной ([1,2,3] в вашем примере). Чтобы на самом деле получить длину (если это все, о чем вы заботитесь), вы можете сделать len(max(L,key=len)), что немного уродливо - Я сломаю его на 2 линии. Или вы можете использовать версию, предоставленную ecatamur.

Все эти ответы имеют петли - в моем случае циклы неявны, что обычно означает, что они будут выполняться в оптимизированном собственном машинного кода. Если вы думаете об этом, как вы могли бы узнать, какой элемент является самым длинным, не глядя на каждого?


Наконец, обратите внимание, что key=function не является особенностью, характерной для max. Многие встроенные python (max, min, sorted, itertools.groupby,...) используют этот конкретный аргумент ключевого слова. Это определенно стоит потратить немного времени, чтобы понять, как он работает и что он обычно делает.

Ответ 2

Попробуйте понять:

max(len(l) for l in L)