I have a list
:
L = ['a', 'b']
I need to create a new list
by concatenating an original list
which range goes from 1
to k
. Example:
k = 4
L1 = ['a1','b1', 'a2','b2','a3','b3','a4','b4']
I try:
l1 = L * k
print l1
#['a', 'b', 'a', 'b', 'a', 'b', 'a', 'b']
l = [ [x] * 2 for x in range(1, k + 1) ]
print l
#[[1, 1], [2, 2], [3, 3], [4, 4]]
l2 = [item for sublist in l for item in sublist]
print l2
#[1, 1, 2, 2, 3, 3, 4, 4]
print zip(l1,l2)
#[('a', 1), ('b', 1), ('a', 2), ('b', 2), ('a', 3), ('b', 3), ('a', 4), ('b', 4)]
print [x+ str(y) for x,y in zip(l1,l2)]
#['a1', 'b1', 'a2', 'b2', 'a3', 'b3', 'a4', 'b4']
But I think it is very complicated. What is the fastest and most generic solution?
My solution almost same, but the output is in different order...
does order matter?
Here is my solution
output:
You can use a list comprehension:
Output