在我当前的Python项目中,我需要创建一些长整数列表,以供以后在图中使用。目前,我正在以以下方式攻击这一点:
volume_axis = []
for values in stripped_header:
for doses in range(100):
volume_axis.append(int(values))
此代码将附加到我的空白列表中,为我提供了100次剥离标头的第一个值,然后在100次剥落的标题中的下一个值。
是否有一种更优雅,更优雅的pythones式方法可以实现这一目标?
for values in stripped_header:
volume_axis += [int(values)] * 100
或使用Itertools(可能更有效)
from itertools import repeat
for values in stripped_header:
volume_axis += repeat(int(values), 100)
这个问题有许多好的Pythonic答案,但是如果您乐于使用Numpy(无论如何这是Matplotlib的依赖性),那么这是一个衬里:
>>> import numpy
>>> stripped_header = [1, 2, 4]
>>>
>>> numpy.repeat(stripped_header, 3)
array([1, 1, 1, 2, 2, 2, 4, 4, 4])
hth
使用 itertools
:
from itertools import chain, repeat
list(chain.from_iterable(repeat(int(n), 100) for n in sh))
考虑 sh
表示剥离
In [1]: sh = [1,2,3,4]
In [2]: [x for x in sh for y in [sh]*5]
Out[2]: [1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4]
,也可以随心所欲以易于理解
In [3]: [x for x in sh for y in range(5)]
Out[3]: [1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4]