Python: Append item to list N times

PythonList

Python Problem Overview


This seems like something Python would have a shortcut for. I want to append an item to a list N times, effectively doing this:

l = []
x = 0
for i in range(100):
    l.append(x)

It would seem to me that there should be an "optimized" method for that, something like:

l.append_multiple(x, 100)

Is there?

Python Solutions


Solution 1 - Python

For immutable data types:

l = [0] * 100
# [0, 0, 0, 0, 0, ...]

l = ['foo'] * 100
# ['foo', 'foo', 'foo', 'foo', ...]

For values that are stored by reference and you may wish to modify later (like sub-lists, or dicts):

l = [{} for x in range(100)]

(The reason why the first method is only a good idea for constant values, like ints or strings, is because only a shallow copy is does when using the <list>*<number> syntax, and thus if you did something like [{}]*100, you'd end up with 100 references to the same dictionary - so changing one of them would change them all. Since ints and strings are immutable, this isn't a problem for them.)

If you want to add to an existing list, you can use the extend() method of that list (in conjunction with the generation of a list of things to add via the above techniques):

a = [1,2,3]
b = [4,5,6]
a.extend(b)
# a is now [1,2,3,4,5,6]

Solution 2 - Python

Use extend to add a list comprehension to the end.

l.extend([x for i in range(100)])

See the Python docs for more information.

Solution 3 - Python

Itertools repeat combined with list extend.

from itertools import repeat
l = []
l.extend(repeat(x, 100))

Solution 4 - Python

I had to go another route for an assignment but this is what I ended up with.

my_array += ([x] * repeated_times)

Solution 5 - Python

You could do this with a list comprehension

l = [x for i in range(10)];

Solution 6 - Python

l = []
x = 0
l.extend([x]*100)

Solution 7 - Python

you can add any value like this for several times:

a = [1,2,3]
b = []
#if you want to add on item 3 times for example:
for i in range(len(a)):
    j = 3
    while j != 0:
        b.append(a[i])
        j-=1
#now b = [1,1,1,2,2,2,3,3,3]

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionTojiView Question on Stackoverflow
Solution 1 - PythonAmberView Answer on Stackoverflow
Solution 2 - PythonJakeView Answer on Stackoverflow
Solution 3 - PythonkevpieView Answer on Stackoverflow
Solution 4 - PythonCTS_AEView Answer on Stackoverflow
Solution 5 - PythonMark ElliotView Answer on Stackoverflow
Solution 6 - PythonRajan saha RajuView Answer on Stackoverflow
Solution 7 - Pythonuser14599223View Answer on Stackoverflow