Возврат списка с копиями элементов

Подскажите, пожалуйста, как мне получить с помощью yield список, который должен содержать n копий этого элемента. Моя функция:

def replicate(value, lst):
    for i in lst:
        yield [i] * value

print(list(replicate(3, [1, "z"])))  # ==> [[1, 1, 1], ['z', 'z', 'z']]

Пример правильного вывода:

list(replicate(1, [1, 'z']))  # [1, 'z']
list(replicate(0, [1, 'z']))  # []
list(replicate(5, [1, 'z']))  # [1, 1, 1, 1, 1, 'z', 'z', 'z', 'z', 'z']

Если использую yield i * valueто получаю [3, 'zzz']. Может быть требуется выпрямление списка


Ответы (2 шт):

Автор решения: splash58

Всего лишь вынести количество в еще один цикл

def replicate(value, lst):
    for i in lst:
        for _ in range(value):
            yield i
→ Ссылка
Автор решения: SergFSM

есть такая конструкция:

def replicate(value, lst):
    for i in lst:
        yield from [i] * value

>>> list(replicate(5, [1, 'z']))  # [1, 1, 1, 1, 1, 'z', 'z', 'z', 'z', 'z']
→ Ссылка