Использование понимания вложенного списка
Сначала вы хотите получить список с каждым числом от 1 до длины вашего подсписка.Есть несколько способов сделать это с помощью списка .
Например
[i for i in range(1, len(sublist) + 1)]
или
[i + 1 for i in range(len(sublist))]
Второй, который вы хотите сделать этодля каждого подсписка внутри вашего my_list
.Поэтому вы должны использовать понимание вложенного списка:
>>> my_list = [[20, 45, 80],[56, 29],[76],[38,156,11,387]]
>>> my_new_list = [[i+1 for i in range(len(sublist))] for sublist in my_list]
>>> my_new_list
[[1, 2, 3], [1, 2], [1], [1, 2, 3, 4]]
Использование понимания списка с диапазоном
Другим способом было бы использование встроенной функции range в качестве генератора дляВаши подсписки:
>>> [list(range(1, len(sublist) + 1)) for sublist in my_list]
[[1, 2, 3], [1, 2], [1], [1, 2, 3, 4]]
Использование карты с диапазоном
Или вы можете использовать встроенную функцию map
>>> list(map(
... lambda sublist: list(range(1, len(sublist) + 1)),
... my_list
... ))
[[1, 2, 3], [1, 2], [1], [1, 2, 3, 4]]