不要再想着用一条线来做事。考虑使用有用的、模块化的、可扩展的抽象。对于这类事情,itertools 提供了很多有用的抽象。
>>> from itertools import repeat, chain
>>> list(chain(repeat(0, 4), repeat(1, 3)))
[0, 0, 0, 0, 1, 1, 1]
通过组合较小的有用抽象开始构建您自己的有用抽象:
>>> from itertools import repeat, chain, starmap
>>> def builder(*pairs, consume=list):
... return consume(chain.from_iterable(starmap(repeat, pairs)))
...
>>> builder((0,3), (1, 4), (2,1), (3, 6))
[0, 0, 0, 1, 1, 1, 1, 2, 3, 3, 3, 3, 3, 3]
虽然有时越简单越好,学习利用语言提供的各种语法糖:
>>> [*repeat(0, 4), *repeat(1, 3), *repeat(2,2)]
[0, 0, 0, 0, 1, 1, 1, 2, 2]