在我目前的Python项目中,我需要创建一些长整数列表,以便以后在图中使用。目前我正在通过以下方式攻击它:
volume_axis = []
for values in stripped_header:
for doses in range(100):
volume_axis.append(int(values))
这段代码会附加到我的空白列表中,给我剥离标题中的第一个值100次,然后剥离标题中的下一个值100次等。
有没有更优雅和pythonesque方式来实现这一目标?
答案 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))