重复列表理解中的元素

时间:2010-10-13 15:44:37

标签: python list-comprehension

我有这个列表理解:

[[x,x] for x in range(3)]

导致此列表:

[[0, 0], [1, 1], [2, 2]]

但我想要的是这个清单:

[0, 0, 1, 1, 2, 2]

生成此列表最简单的方法是什么?

7 个答案:

答案 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 ?