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

#python #list

#питон #Список

Вопрос:

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

 mylist = [['C  ', 'Java', 'Python', 'Swift'], ['Software','Web','Mobile'], ['Microsoft', 'Oracle', 'OpenSource', 'Apple', 'SAP']]
l1 = []
l2 = []
l3 = []
l = [l1, l2, l3]
for n in mylist[0]:
    c = len(n)
    l1.append(c)
for n in mylist[1]:
    c = len(n)
    l2.append(c)
for n in mylist[2]:
    c = len(n)
    l3.append(c)
print(l)
  

Правильный вывод — это:

 [[3, 4, 6, 5], [8, 3, 6], [9, 6, 10, 5, 3]]
  

Я попытался использовать один цикл for, но он показывает результаты в одном списке, а не в списке списков.

 l = []
for i in mylist:
    for n in i:
        c = len(n)
        l.append(c)
print(l)
  

Также попробовал цикл while, но программа завершилась как бесконечный цикл.

 mylist = [['C  ', 'Java', 'Python', 'Swift'], ['Software','Web','Mobile'], ['Microsoft', 'Oracle', 'OpenSource', 'Apple', 'SAP']]
l = []
i = 0
n = 0
while i < len(mylist):
    while n < len(mylist[i]):
        c = len(mylist[i][n])
        l.append(c)
    fl = [l]
    l = []
    i  = 1
print(fl)
  

Комментарии:

1. print([[len(s) for s in l] for l in mylist])

Ответ №1:

Вы можете использовать понимание списка

 res = [[len(y) for y in x] for x in mylist]
print(res)
  

Выходной сигнал:

 [[3, 4, 6, 5], [8, 3, 6], [9, 6, 10, 5, 3]]
  

Ответ №2:

Простой ответ — это простое понимание вложенного списка:

 output = [[len(element) for element in sublist] for sublist in mylist]
  

Вы можете использовать один цикл, если вы делегируете некоторую работу map :

 output = [list(map(len, sublist)) for sublist in mylist]
  

Если вы хотите повеселиться, вы можете использовать map дважды:

 output = list(map(lambda sublist: list(map(len, sublist)), mylist))
  

Комментарии:

1. Для меня list(map(lambda это противоположность веселью 😛

2. Спасибо! Понимания вложенного списка было достаточно!