给出以下列表:
a = [0, 5, 1]
b = [1, 2, 1]
我想将[a]的每个元素重复其在[b]中的对应位置的编号,以产生此结果:
[0, 5, 5, 1]
即0发生1次,5发生2次,1发生1次。
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)
-重复elem n次zip(a, b)
从两个列表中组成一个2元组的列表,将每个元素与另一个列表中的对应元素配对。这为您提供了itertools.repeat
用例中需要传递给的确切信息。itertools.chain
-将迭代器的结果列表展平为单个值列表。您既可以chain(*iterable)
像我一样,也可以chain.from_iterable(iterable)
像马丁·彼得斯那样。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句