How to create a list of a specific size in Python
Preallocating storage for a list or array is a common practice among programmers when they know the number of elements in advance.
Unlike C++
and Java, in Python you must initialize all preallocated storage with some value. Typically, developers use dummy values for this purpose, such as None
, ''
, False
and 0
.
Python provides several ways to create fixed-size lists, each with different performance characteristics.
To compare the performance of different approaches, we will use Python's standard module timeit
, which provides a convenient way to measure the running time of a small piece of Python code.
Preallocate storage for lists
The first, and fastest, method is to use *
the operator, which repeats a list a specified number of times.
>>> [None] * 10
[None, None, None, None, None, None, None, None, None, None]
One million iterations ( timeit
the default iteration value) takes about 117 milliseconds.
>>> timeit("[None] * 10")
0.11655918900214601
Another approach is to range
use built-in functions with list comprehensions.
>>> [None for _ in range(10)]
[None, None, None, None, None, None, None, None, None, None]
It is nearly six times slower, taking 612 milliseconds per million iterations.
>>> timeit("[None for _ in range(10)]")
0.6115895550028654
The third method is to use list.append()
with for
a loop.
>>> a = []
>>> for _ in range(10):
... a.append(None)
...
>>> a
[None, None, None, None, None, None, None, None, None, None]
Using a loop is the slowest method, requiring 842 milliseconds to complete one million iterations.
>>> timeit("for _ in range(10): a.append(None)", setup="a=[]")
0.8420009529945673
Preallocating storage for other sequential data structures
Since you're pre-allocating storage for a sequential data structure, it array
probably makes more sense to use a built-in data structure instead of a list.
>>> from array import array
>>> array('i',(0,)*10)
array('i', [0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
As shown below, this method is second only to [None] * 10
.
>>> timeit("array('i',(0,)*10)", setup="from array import array")
0.4557597979946877
Let's NumPy
compare the above pure Python approach with Python libraries for scientific computing.
>>> from numpy import empty
>>> empty(10)
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
The NumPy method takes 589 milliseconds per million iterations.
>>> timeit("empty(10)", setup="from numpy import empty")
0.5890094790011062
However, for larger lists, the NumPy method will be faster.
>>> timeit("[None]*10000")
16.059584009999526
>>> timeit("empty(10000)", setup="from numpy import empty")
1.1065983309963485
The conclusion is that for small lists it is best to use [None] * 10
, but switch to NumPy when dealing with larger amounts of sequential data empty()
.
For reprinting, please send an email to 1244347461@qq.com for approval. After obtaining the author's consent, kindly include the source as a link.
Related Articles
Finding a string in a list in Python
Publish Date:2025/05/09 Views:75 Category:Python
-
This tutorial shows you how to find elements from a Python list that have a specific substring in them. We will use the following list and extract ack the strings that have in it. my_list = [ "Jack" , "Mack" , "Jay" , "Mark" ] for Find elem
Getting list shape in Python
Publish Date:2025/05/09 Views:139 Category:Python
-
In Python, knowing the shape of a list is very important for working with data structures, especially when it comes to multidimensional or nested lists. This article explores various ways to determine the shape of a list in Python, from sim
Adding multiple elements to a list in Python
Publish Date:2025/05/09 Views:180 Category:Python
-
List is a mutable data structure in Python. It can contain values of different types. This article will discuss some methods to append single or multiple elements to a Python list. append() Append a single element in a Python list usi
Get the index of the maximum and minimum values in a list in Python
Publish Date:2025/05/09 Views:117 Category:Python
-
In this tutorial, we will discuss methods to get the index of the maximum and minimum value of a list in Python. max() Get the index of the maximum value in a list using and list.index() functions in Python max() The function gives the maxi
List of numbers from 1 to N in Python
Publish Date:2025/05/09 Views:116 Category:Python
-
This tutorial will discuss how to create a list of numbers from 1 to some specified number. Create a user-defined function to create a list of numbers from 1 to N This method will take the desired number from the user and for iterate until
Convert List to Pandas DataFrame in Python
Publish Date:2025/05/09 Views:133 Category:Python
-
This article will show you how to convert items in a list into a Pandas DataFrame. Convert List to Pandas DataFrame in Python DataFrame, in general, is a two-dimensional labeled data structure. Pandas is an open source Python package that i
Sorting a list by another list in Python
Publish Date:2025/05/09 Views:148 Category:Python
-
Normally, when we sort a list, we do it in ascending or descending order. However, we can sort a list based on the order of another list in Python. We will learn how to sort a given list based on the values in another list in this art
Normalizing a list of numbers in Python
Publish Date:2025/05/09 Views:134 Category:Python
-
Normalization means converting the given data to another scale. We rescale the data so that it is between two values. Most of the time, the data is rescaled between 0 and 1. We rescale data for different purposes. For example, machine learn
How to Find the Maximum Value in a List in Python
Publish Date:2025/05/09 Views:99 Category:Python
-
This tutorial will demonstrate how to find the maximum value in a list in Python. This tutorial will cover a number of scenarios and data types, from simple lists of integers to more complex structures like arrays within arrays. for Finding