Question
Asked By – Toji
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?.
Now we will see solution for issue: Python: Append item to list N times
Answer
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]
This question is answered By – Amber
This answer is collected from stackoverflow and reviewed by FixPython community admins, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0