2014-11-06 28 views

回答

3
>>> j = 3 
>>> drange = [] 
>>> for i in xrange(j): 
...  drange.extend([i]*2) 
... 
>>> drange 
[0, 0, 1, 1, 2, 2] 

或作爲列表解析

>>> drange = [i for i in xrange(j) for k in range(2)] 
>>> drange 
[0, 0, 1, 1, 2, 2] 

在一些情況下,這種方法還可以適當

>>> drange = [i//2 for i in xrange(j*2)] 
>>> drange 
[0, 0, 1, 1, 2, 2] 
+0

如果你可以給每個那將是很好的方法的優點/缺點,謝謝! – chacham15 2014-11-06 01:19:47

0

使用列表中理解,然後壓平列表:

>>> sum([ [i]*2 for i in xrange(5)],[]) 
[0, 0, 1, 1, 2, 2, 3, 3, 4, 4] 
+0

不幸的是,使用與列表的總和具有二次性能,所以它不能很好地擴展。 – 2014-11-06 01:07:45

0

這裏是一個兩線的選擇。

base= [2*[i] for i in range(5)] 
drange = [item for x in base for item in x] 
1

的答案使用numpy的

>>> import numpy as np 
>>> j = 3 
>>> np.repeat(np.array(xrange(j)), 2) 
array([0, 0, 1, 1, 2, 2])