我有这个列表理解:
[[x,x] for x in range(3)]
导致此列表:
[[0, 0], [1, 1], [2, 2]]
但我想要的是这个清单:
[0, 0, 1, 1, 2, 2]
生成此列表最简单的方法是什么?
答案 0 :(得分:12)
[y for x in range(3) for y in [x, x]]
答案 1 :(得分:4)
>>> [i for i in range(3) for _ in range(2)]
[0, 0, 1, 1, 2, 2]
答案 2 :(得分:4)
一般解决方案;
m = 3 #the list of integers
n = 2 # of repetitions
[x for x in range(m) for y in range(n)]
答案 3 :(得分:2)
>>> [int(x/2) for x in range(6)]
[0, 0, 1, 1, 2, 2]
答案 4 :(得分:1)
我的解决方案:
def explode_list(p,n):
arr=[]
track=0
if n==0:
return arr
while track<len(p):
m=1
while m<=n:
arr.append(p[track])
m=m+1
track=track+1
return arr
答案 5 :(得分:0)
你可能会逃避这个:
[floor(x/2) for x in range(6)]
<强> EDIT1 强>
[int(x/2) for x in range(6)]
是更加便携的解决方案。虽然其他答案似乎更好。
答案 6 :(得分:0)
[x/2 for x in range(6)]
更新
[x//2 for x in range(6)] #ok now ?