Python initialize list of tuples

This article describes how to initialize a list with any size (number of elements) and values in Python.

  • Create an empty list
  • Initialize a list with any size and values
  • Notes on initializing a 2D list (list of lists)
  • For tuples and arrays

See the following article about the initialization of NumPy array ndarray.

  • NumPy: Create an ndarray with all elements initialized with the same value

Create an empty list

An empty list is created as follows. You can get the number of elements of a list with the built-in function len().

You can add an element by append() or remove it by remove().

l_empty.append(100) l_empty.append(200) print(l_empty) # [100, 200] l_empty.remove(100) print(l_empty) # [200]

source: list_initialize.py

See the following articles for details on adding and removing elements from lists,

Initialize a list with any size and values

As mentioned above, in Python, you can easily add and remove elements from a list, so in most cases, it is not necessary to initialize the list in advance.

If you want to initialize a list of any number of elements where all elements are filled with any values, you can use the * operator as follows.

l = [0] * 10 print(l) # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] print(len(l)) # 10

source: list_initialize.py

A list is generated that repeats the elements of the original list.

print([0, 1, 2] * 3) # [0, 1, 2, 0, 1, 2, 0, 1, 2]

source: list_initialize.py

You can generate a list of sequential numbers with range().

  • How to use range() in Python

Notes on initializing a 2D list (list of lists)

Be careful when initializing a list of lists.

The following code is no good.

l_2d_ng = [[0] * 4] * 3 print(l_2d_ng) # [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

source: list_initialize.py

If you update one list, all the lists will be changed.

l_2d_ng[0][0] = 5 print(l_2d_ng) # [[5, 0, 0, 0], [5, 0, 0, 0], [5, 0, 0, 0]] l_2d_ng[0].append(100) print(l_2d_ng) # [[5, 0, 0, 0, 100], [5, 0, 0, 0, 100], [5, 0, 0, 0, 100]]

source: list_initialize.py

This is because the inner lists are all the same object.

print(id(l_2d_ng[0]) == id(l_2d_ng[1]) == id(l_2d_ng[2])) # True

source: list_initialize.py

You can write as follows using list comprehensions.

  • List comprehensions in Python

l_2d_ok = [[0] * 4 for i in range(3)] print(l_2d_ok) # [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

source: list_initialize.py

Each inner list is treated as a different object.

l_2d_ok[0][0] = 100 print(l_2d_ok) # [[100, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] print(id(l_2d_ok[0]) == id(l_2d_ok[1]) == id(l_2d_ok[2])) # False

source: list_initialize.py

Although range() is used in the above example, any iterable of the desired size is acceptable.

l_2d_ok_2 = [[0] * 4 for i in [1] * 3] print(l_2d_ok_2) # [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] l_2d_ok_2[0][0] = 100 print(l_2d_ok_2) # [[100, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] print(id(l_2d_ok_2[0]) == id(l_2d_ok_2[1]) == id(l_2d_ok_2[2])) # False

source: list_initialize.py

If you want to generate a multidimensional list, you can nest list comprehensions.

l_3d = [[[0] * 2 for i in range(3)] for j in range(4)] print(l_3d) # [[[0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0]]] l_3d[0][0][0] = 100 print(l_3d) # [[[100, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0]]]

source: list_initialize.py

For tuples and arrays

You can initialize tuples as well as lists.

Note that a tuple of one element requires ,.

  • One-element tuples require a comma in Python

t = (0,) * 5 print(t) # (0, 0, 0, 0, 0)

source: list_initialize.py

For array type, you can pass the initialized list to the constructor.

  • array — Efficient arrays of numeric values — Python 3.9.0 documentation

import array a = array.array('i', [0] * 5) print(a) # array('i', [0, 0, 0, 0, 0])

source: list_initialize.py

  • English / Japanese
  • |
  • Disclaimer
  • Privacy policy
  • GitHub