Python: Append item to list N times

Question:

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?


If you want to append elements from another sequence (instead of the same value repeatedly, you can just .extend with that sequence directly. See How to append to the end of an empty list?.

Asked By: Toji

||

Answers:

You could do this with a list comprehension

l = [x for i in range(10)];
Answered By: Mark Elliot

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]
Answered By: Amber

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.

Answered By: Jake

Itertools repeat combined with list extend.

from itertools import repeat
l = []
l.extend(repeat(x, 100))
Answered By: kevpie

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

my_array += ([x] * repeated_times)
Answered By: CTS_AE
l = []
x = 0
l.extend([x]*100)
Answered By: Rajan saha Raju

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]
Answered By: user14599223
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.