In [7]: a = [0, 5, 1]
In [8]: b = [1, 2, 1]
In [9]: list(itertools.chain(*(itertools.repeat(elem, n) for elem, n in zip(a, b))))
Out[9]: [0, 5, 5, 1]
In [10]: b = [2, 3, 4]
In [11]: list(itertools.chain(*(itertools.repeat(elem, n) for elem, n in zip(a, b))))
Out[11]: [0, 0, 5, 5, 5, 1, 1, 1, 1]
Кусков здесь являются следующим:
itertools.repeat(elem, n)
- повтор эль п раз
zip(a, b)
Составьте список из 2-х кортежей из двух списков, сопрягая каждый элемент с соответствующим элементом в другом списке. Это дает вам именно то, что вам нужно передать в itertools.repeat
в вашем прецеденте.
itertools.chain
- выравнивает результирующий список итераторов в один список значений. Вы можете либо chain(*iterable)
, как я сделал, либо chain.from_iterable(iterable)
, как и Martijn Peters.
Похоже, вы хотите, чтобы мы написали вам код. Хотя многие пользователи готовы создавать код для кодера, терпящего бедствие, они обычно помогают только тогда, когда плакат уже попытался решить проблему самостоятельно. Хорошим способом продемонстрировать это усилие является включение кода, который вы написали до сих пор, пример ввода (если он есть), ожидаемый вывод и вывод, который вы фактически получаете (вывод консоли, трассировки стека, ошибки компилятора - все, что угодно применимо). Чем больше деталей вы предоставляете, тем больше ответов вы получите. –
Какая невероятная поездка. Во-первых, меня избивали в новообращенную подачу за то, что вы не отправили лучшую должность (должным образом отметили), а затем набросились большие ответы. –