Python-创建模式化列表

Python-创建模式化列表,python,matplotlib,mayavi,Python,Matplotlib,Mayavi,在我当前的Python项目中,我需要创建一些长的整数列表,以便以后在绘图中使用。目前,我正以以下方式对此进行攻击: volume_axis = [] for values in stripped_header: for doses in range(100): volume_axis.append(int(values)) 此代码将附加到我的空白列表中,给我100次剥离标题中的第一个值,然后给我100次剥离标题中的下一个值,以此类推 有没有一种更优雅、更像蟒蛇的

在我当前的Python项目中,我需要创建一些长的整数列表,以便以后在绘图中使用。目前,我正以以下方式对此进行攻击:

volume_axis = []

for values in stripped_header: 
    for doses in range(100):  
        volume_axis.append(int(values))
此代码将附加到我的空白列表中,给我100次剥离标题中的第一个值,然后给我100次剥离标题中的下一个值,以此类推

有没有一种更优雅、更像蟒蛇的方式来实现这一点

for values in stripped_header: 
    volume_axis += [int(values)] * 100
或者使用itertools(可能更有效)


考虑
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]

使用
itertools

from itertools import chain, repeat
list(chain.from_iterable(repeat(int(n), 100) for n in sh))

对于这个问题,有很多很好的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

在这里定义之前,您使用的是
y
[sh]*5
有点不透明,
范围(5)
不是更容易理解吗?我在想。。。如果OP对使用numpy感到满意,那么这就是出路
>>> import numpy
>>> stripped_header = [1, 2, 4]
>>>
>>> numpy.repeat(stripped_header, 3)
array([1, 1, 1, 2, 2, 2, 4, 4, 4])