Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据值列表重复每个元素_Python_List - Fatal编程技术网

Python 根据值列表重复每个元素

Python 根据值列表重复每个元素,python,list,Python,List,是否有一个Python内置程序根据另一个列表中的对应值重复列表中的每个元素?例如,由于列表y中位置0处的值2,列表x中的A位置0重复了2次 >>> x = ['A', 'B', 'C'] >>> y = [2, 1, 3] >>> f(x, y) ['A', 'A', 'B', 'C', 'C', 'C'] 或者换句话说,实现此操作的最快方法是什么?试试这个 x = ['A', 'B', 'C'] y = [2, 1, 3] newarra

是否有一个Python内置程序根据另一个列表中的对应值重复列表中的每个元素?例如,由于列表
y
中位置0处的值
2
,列表
x
中的
A
位置0重复了2次

>>> x = ['A', 'B', 'C']
>>> y = [2, 1, 3]
>>> f(x, y)
['A', 'A', 'B', 'C', 'C', 'C']
或者换句话说,实现此操作的最快方法是什么?

试试这个

x = ['A', 'B', 'C']
y = [2, 1, 3]
newarray = []
for i in range(0,len(x)):
    newarray.extend(x[i] * y[i])

print newarray

一种方法是

x = ['A', 'B', 'C']
y = [2, 1, 3]

s = []
for a, b in zip(x, y):
    s.extend([a] * b)

print(s)
结果

['A', 'A', 'B', 'C', 'C', 'C']

还有
itertools。同样重复
,但对于这种特殊情况,结果会更难看。

只需使用简单的列表理解:

>>> x = ['A', 'B', 'C']
>>> y = [2, 1, 3]
>>> [x[i] for i in range(len(x)) for j in range(y[i])]
['A', 'A', 'B', 'C', 'C', 'C']
>>> 

我对a.J.(列表理解)、Randy C.(itertools)、mkHun和Paul Rooney(列表扩展)的答案执行了
%timeit
,使用
f(['a','B','C'],[20000,10,3])
。列表扩展速度最快,为155微秒,然后列表理解速度为301秒,最慢的是itertools,速度为1.3毫秒。编辑列表comp速度最慢,而不是itertools。列表扩展%timeit
,这是最快的
列表(''.join([a*b代表a,b在zip(x,y)])
几乎和Paul Rooney的代码(155 us)一样快(162 us),但在10000次迭代后,速度并不比Paul Rooney的代码(155us)快
>>> x = ['A', 'B', 'C']
>>> y = [2, 1, 3]
>>> [x[i] for i in range(len(x)) for j in range(y[i])]
['A', 'A', 'B', 'C', 'C', 'C']
>>>