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

Получить максимальную длину многомерного кортежа

Мой кортеж выглядит примерно так (для определенного набора сгенерированного значения)

tTrains = [ (3, ), (1, 3), (6, 8), (4, 6, 8, 9), (2, 4) ]

Теперь мне нужно найти длину самого длинного кортежа внутри этого набора/списка. Я всегда могу использовать цикл for, перебирать все подтипы и делать это. Но я хочу спросить, есть ли предопределенная функция для того же самого.

Текущее использование

Это то, что я собираюсь использовать на данный момент

max = 0
for i in range( len(tTrains) ):
  if iMax < len( i ):
    iMax = len( i )
4b9b3361

Ответ 1

tup=[ (3, ), (1, 3), (6, 8), (4, 6, 8, 9), (2, 4) ]
max(map(len,tup))

результат:

4

Ответ 2

Вы не должны использовать max как имя переменной, так как это затеняет встроенное имя с тем же именем. Этот встроенный max() может использоваться для вычисления максимального числа итераций.

В настоящее время у вас есть список кортежей, но вам нужен максимальный список их длин. Чтобы получить этот список, вы можете использовать понимание списка:

[len(t) for t in tuples]

(Обратите внимание, что я переименовал ваш список tuple в tuples, так как tuple будет скрывать встроенный тип с тем же именем.)

Теперь вы можете применить max() к этому списку или, что еще лучше, к выражению генератора, построенному аналогичным образом.

Ответ 3

Другое решение:

>>> tup=[ (3, ), (1, 3), (6, 8), (4, 6, 8, 9), (2, 4) ]
>>> len(max(tup, key=len))
4

который переводится как "дать мне длину самого большого элемента tup, с" наибольшим ", определяемым длиной элемента.