Initialize a list with given size and values in PythonPosted: 2020-10-19 / Tags: Python, List Tweet This article describes how to initialize a list with an any size (number of elements) and values in Python. Show
See the following article about initialization of NumPy array ndarray.
Sponsored Link Create an empty listAn 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,
Initialize a list with an any size and valuesAs mentioned above, in Python, you can easily add and remove elements from a list, so there are few situations where you need to initialize a 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().
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.
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 a 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 arraysYou can initialize tuples as well as lists. Note that a tuple of one element requires ,.
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.
import array
a = array.array('i', [0] * 5)
print(a)
# array('i', [0, 0, 0, 0, 0])
source: list_initialize.py Sponsored Link Share TweetRelated Categories
Related Articles
|