Ответ 1
tup=[ (3, ), (1, 3), (6, 8), (4, 6, 8, 9), (2, 4) ]
max(map(len,tup))
результат:
4
Мой кортеж выглядит примерно так (для определенного набора сгенерированного значения)
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 )
tup=[ (3, ), (1, 3), (6, 8), (4, 6, 8, 9), (2, 4) ]
max(map(len,tup))
результат:
4
Вы не должны использовать max
как имя переменной, так как это затеняет встроенное имя с тем же именем. Этот встроенный max()
может использоваться для вычисления максимального числа итераций.
В настоящее время у вас есть список кортежей, но вам нужен максимальный список их длин. Чтобы получить этот список, вы можете использовать понимание списка:
[len(t) for t in tuples]
(Обратите внимание, что я переименовал ваш список tuple
в tuples
, так как tuple
будет скрывать встроенный тип с тем же именем.)
Теперь вы можете применить max()
к этому списку или, что еще лучше, к выражению генератора, построенному аналогичным образом.
Другое решение:
>>> tup=[ (3, ), (1, 3), (6, 8), (4, 6, 8, 9), (2, 4) ]
>>> len(max(tup, key=len))
4
который переводится как "дать мне длину самого большого элемента tup
, с" наибольшим ", определяемым длиной элемента.