Initialise a list to a specific length in Python
Question:
How do I initialise a list with 10 times a default value in Python?
I’m searching for a good-looking way to initialize a empty list with a specific range.
So make a list that contains 10 zeros or something to be sure that my list has a specific length.
Answers:
list multiplication works.
>>> [0] * 10
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
If the “default value” you want is immutable, @eduffy’s suggestion, e.g. [0]*10
, is good enough.
But if you want, say, a list of ten dict
s, do not use [{}]*10
— that would give you a list with the same initially-empty dict
ten times, not ten distinct ones. Rather, use [{} for i in range(10)]
or similar constructs, to construct ten separate dict
s to make up your list.
In a talk about core containers internals in Python at PyCon 2012, Raymond Hettinger is suggesting to use [None] * n
to pre-allocate the length you want.
Slides available as PPT or via Google
The whole slide deck is quite interesting.
The presentation is available on YouTube, but it doesn’t add much to the slides.
How do I initialise a list with 10 times a default value in Python?
I’m searching for a good-looking way to initialize a empty list with a specific range.
So make a list that contains 10 zeros or something to be sure that my list has a specific length.
list multiplication works.
>>> [0] * 10
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
If the “default value” you want is immutable, @eduffy’s suggestion, e.g. [0]*10
, is good enough.
But if you want, say, a list of ten dict
s, do not use [{}]*10
— that would give you a list with the same initially-empty dict
ten times, not ten distinct ones. Rather, use [{} for i in range(10)]
or similar constructs, to construct ten separate dict
s to make up your list.
In a talk about core containers internals in Python at PyCon 2012, Raymond Hettinger is suggesting to use [None] * n
to pre-allocate the length you want.
Slides available as PPT or via Google
The whole slide deck is quite interesting.
The presentation is available on YouTube, but it doesn’t add much to the slides.