'How to iterate the first index value twice before going to the next index position?

I'm trying to make a for loop that iterates each index twice before going to the next one, for example if I have the following list:

l = [1,2,3]

I would like to iterate it if it was in this way:

l = [1,1,2,2,3,3]

could someone help me with this problem please?



Solution 1:[1]

You could make a list comprehension that repeats the elements and flattens the result:

l = [1,2,3]
repeat = 2

[n for i in l for n in [i]*repeat]
# [1, 1, 2, 2, 3, 3]

Solution 2:[2]

You can solve this by using NumPy.

import numpy as np

l = np.repeat([1,2,3],2)

Repeat repeats elements of an array the specified number of times. This also returns a NumPy array. This can be converted back to a list if you wish with list(l). However, NumPy arrays act similar to lists so most of the time you don't need to change anything.

Solution 3:[3]

Unsurprisingly, more-itertools has that:

>>> from more_itertools import repeat_each
>>> for x in repeat_each([1, 2, 3]):
...     print(x)
... 
1
1
2
2
3
3

(It also has an optional second parameter for telling it how often to repeat each. For example repeat_each([1, 2, 3], 5). Default is 2.)

Solution 4:[4]

l = [1, 2, 3]
lst = []

for x in l:
   for i in range(2):
      lst.append(x)
print(lst)
# [1, 1, 2, 2, 3, 3]

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Mark
Solution 2 Charlie Ciampa
Solution 3
Solution 4