Вложенного список понимания работы:
L = ['a','b','c','d']
numbers = [2, 4, 3, 1]
>>> [x for x, number in zip(L, numbers) for _ in range(number)]
['a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'd']
"Sub-петлю" for _ in range(number)
повторяет Значение number
раз. Здесь L
может содержать любые объекты, а не только строки.
Пример:
L = [[1, 2, 3],'b','c', 'd']
numbers = [2, 4, 3, 1]
[x for x, number in zip(L, numbers) for _ in range(number)]
[[1, 2, 3], [1, 2, 3], 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'd']
но это сглаживает список суб:
[x for i, j in zip(L, numbers) for x in i*j]
[1, 2, 3, 1, 2, 3, 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'd']
не совсем желаемого результата.
@Ekaterina отредактируйте ваш вопрос, чтобы включить этот фрагмент кода, а не комментарии. – hfz