Python Glossary Русский

all Python 3Lists (list)term

Nested lists / matrices

matrices

A list of lists is used as a two-dimensional matrix. Items are reached through a double index, matrix[row][col].

Syntax

matrix[i][j]  |  [[val]*cols for _ in range(rows)]

The classic trap is [[0] * cols] * rows: the outer multiplication copies a reference, so every row is the same list and writing one cell changes a whole column. Build rows with a list comprehension instead, so each iteration creates a fresh row. Indexing goes matrix[row][col], and nothing enforces a rectangle — rows may differ in length, and you usually find out via IndexError.

Examples

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(matrix[1][2])  # → 6
for row in matrix:
    print(row)  # → [1, 2, 3] / [4, 5, 6] / [7, 8, 9]
zeros = [[0] * 3 for _ in range(3)]  # не [[0] * 3] * 3: там одна строка трижды
zeros[0][0] = 1
print(zeros)  # → [[1, 0, 0], [0, 0, 0], [0, 0, 0]]
m = [[i + j for j in range(3)] for i in range(3)]
print(m)  # → [[0, 1, 2], [1, 2, 3], [2, 3, 4]]
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print([[row[i] for row in matrix] for i in range(3)])  # → [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
print([val for row in matrix for val in row])  # → [1, 2, 3, 4, 5, 6, 7, 8, 9]
print([matrix[i][i] for i in range(3)])  # → [1, 5, 9]

See also

Open in the full glossarydocs.python.orgReport an inaccuracy