Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python: Append item to list N times

Tags:

python

list

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?

like image 525
Toji Avatar asked Jan 11 '11 05:01

Toji


People also ask

Can append take multiple values in list Python?

You can use the sequence method list. extend to extend the list by multiple values from any kind of iterable, being it another list or any other thing that provides a sequence of values. So you can use list. append() to append a single value, and list.

How do you append a specific number in Python?

append() will place new items in the available space. Lists are sequences that can hold different data types and Python objects, so you can use . append() to add any object to a given list. In this example, you first add an integer number, then a string, and finally a floating-point number.


1 Answers

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] 
like image 129
Amber Avatar answered Oct 05 '22 08:10

Amber