Python declare list

Initialize a list with given size and values in Python

Posted: 2020-10-19 / Tags: Python, List

Tweet

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

Sponsored Link

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[].

l_empty = [] print[l_empty] # [] print[len[l_empty]] # 0

source: list_initialize.py

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,

  • Add an item to a list in Python [append, extend, insert]
  • Remove an item from a list in Python [clear, pop, remove, del]

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

Sponsored Link

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

Sponsored Link

Share

Tweet

Related Categories

  • Python
  • List

Related Articles

  • Random sampling from a list in Python [random.choice, sample, choices]
  • Transpose 2D list in Python [swap rows and columns]
  • Pretty-print with pprint in Python
  • Shuffle a list, string, tuple in Python [random.shuffle, sample]
  • How to slice a list, string, tuple in Python
  • Apply a function to items of a list with map[] in Python
  • Convert a list of strings and a list of numbers to each other in Python
  • zip[] in Python: Get elements from multiple lists
  • enumerate[] in Python: Get the element and index from a list
  • Reverse a list, string, tuple in Python [reverse, reversed]
  • Get the number of items of a list in Python
  • Convert numpy.ndarray and list to each other
  • Sort a list of dictionaries by the value of the specific key in Python
  • in operator in Python [for list, string, dictionary, etc.]
  • Remove an item from a list in Python [clear, pop, remove, del]

Video liên quan

Chủ Đề