我想创建一系列长度不同的列表。每个列表将包含相同的元素e,重复n次(其中n =列表的长度)。
我如何创建列表,而不使用列表理解[e为xrange(n)中的数字]为每个列表?
我想创建一系列长度不同的列表。每个列表将包含相同的元素e,重复n次(其中n =列表的长度)。
我如何创建列表,而不使用列表理解[e为xrange(n)中的数字]为每个列表?
当前回答
Itertools有一个函数:
import itertools
it = itertools.repeat(e,n)
当然,itertools提供的是迭代器而不是列表。[e] * n给你一个列表,但是,根据你对这些序列做什么,itertools变体可以更有效。
其他回答
[e] * n
应该工作
Itertools有一个函数:
import itertools
it = itertools.repeat(e,n)
当然,itertools提供的是迭代器而不是列表。[e] * n给你一个列表,但是,根据你对这些序列做什么,itertools变体可以更有效。
如果你正在寻找一个简单的重复:
[1, 2, 3, 1, 2, 3, 1, 2, 3]
简单的使用方法:
[1, 2, 3] * 3
但如果你在寻找:
[1, 1, 1, 2, 2, 2, 3, 3, 3]
这个比较好,但是比较花时间:
numpy.concatenate([([i]*3) for i in [1,2,3]], axis=0)
如果你在寻找
[1, 1, 1, 2, 2, 2, 3, 3, 3]
如果没有numpy,可以使用内置的itertools模块
from itertools import chain
list(chain.from_iterable(zip(*[[1,2,3]]*3)))
使用简单的列表推导式(甚至没有itertools)
[e for x in zip(*[[1,2,3]]*3) for e in x]
很抱歉我这么晚才回复 您可以使用numpy。容易重复。只要写下你想要产生的价值和重复的次数。
import numpy as np
x = [1,2,3]
y = np.linspace(0,1000,10000)
for i in x:
new_x = np.repeat(i,len(y))
print(new_x)