3

Друзья, как мне конструкцию ниже превратить в красивый генератор списка?

cnt = int(input())
list=[]
for i in range(0, cnt+1):
    for j in range(0, i):
        list += [i]

И/или в чем моя ошибка?

list=[[list+=[i] for j in range(0, i)] for i in range(0, cnt)]
  • 1
    Не стоит использовать зарезервированные слова Python в качестве названий для переменный. В данном случае вы использовали зарезервированное слово list – Pavel Durmanov Dec 08 '17 at 16:19

1 Answers1

4
lst = [x for i in range(int(input()) + 1) for x in [i]*i]

или ленивая версия:

from itertools import repeat 

it = (x for i in range(int(input()) + 1) for x in repeat(i, i))
jfs
  • 52,361