Python - 创建图案列表

时间:2012-10-22 07:44:22

标签: python matplotlib mayavi

在我目前的Python项目中,我需要创建一些长整数列表,以便以后在图中使用。目前我正在通过以下方式攻击它:

volume_axis = []

for values in stripped_header: 
    for doses in range(100):  
        volume_axis.append(int(values))

这段代码会附加到我的空白列表中,给我剥离标题中的第一个值100次,然后剥离标题中的下一个值100次等。

有没有更优雅和pythonesque方式来实现这一目标?

4 个答案:

答案 0 :(得分:3)

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)

答案 1 :(得分:2)

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

答案 2 :(得分:1)

考虑sh代表stripped_header

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]

答案 3 :(得分:1)

使用itertools

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