У меня есть понимание этого списка:
[[x,x] for x in range(3)]
что приводит к этому списку:
[[0, 0], [1, 1], [2, 2]]
но мне нужен этот список:
[0, 0, 1, 1, 2, 2]
Какой самый простой способ создать этот список?
[y for x in range(3) for y in [x, x]]
общее решение;
m = 3 #the list of integers n = 2 # of repetitions [x for x in range(m) for y in range(n)]
>>> [i for i in range(3) for _ in range(2)] [0, 0, 1, 1, 2, 2]
>>> [int(x/2) for x in range(6)] [0, 0, 1, 1, 2, 2]
Мое решение:
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
[x/2 for x in range(6)]
обновление:
[x//2 for x in range(6)] #ok now ?
Вам может сойтись с этим:
[floor(x/2) for x in range(6)]
edit1
[int(x/2) for x in range(6)]
- это более портативное решение в том же духе.Хотя другие представленные ответы кажутся лучше.