Python: Append item to list N times
PythonListPython 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]