0
0
PythonHow-ToBeginner · 3 min read

How to Create Matrix Using List Comprehension in Python

You can create a matrix in Python using nested list comprehensions where the outer list represents rows and the inner list represents columns. For example, matrix = [[0 for _ in range(cols)] for _ in range(rows)] creates a matrix filled with zeros.
📐

Syntax

The basic syntax for creating a matrix using list comprehension is a nested structure:

  • matrix = [[expression for column in range(num_columns)] for row in range(num_rows)]
  • The outer list creates each row.
  • The inner list creates each column in that row.
  • expression defines the value for each element.
python
matrix = [[0 for _ in range(3)] for _ in range(2)]
💻

Example

This example creates a 3x4 matrix filled with zeros and prints it row by row.

python
rows, cols = 3, 4
matrix = [[0 for _ in range(cols)] for _ in range(rows)]
for row in matrix:
    print(row)
Output
[0, 0, 0, 0] [0, 0, 0, 0] [0, 0, 0, 0]
⚠️

Common Pitfalls

A common mistake is using matrix = [[0] * cols] * rows which creates references to the same inner list, causing unexpected changes across rows.

Correct way is to use nested list comprehension to create independent inner lists.

python
wrong_matrix = [[0] * 3] * 2
wrong_matrix[0][0] = 1
print(wrong_matrix)  # Both rows change

correct_matrix = [[0 for _ in range(3)] for _ in range(2)]
correct_matrix[0][0] = 1
print(correct_matrix)  # Only first row changes
Output
[[1, 0, 0], [1, 0, 0]] [[1, 0, 0], [0, 0, 0]]
📊

Quick Reference

Tips for creating matrices with list comprehension:

  • Use nested list comprehensions for independent rows.
  • Use _ as a throwaway variable when the index is not needed.
  • Customize the expression to fill the matrix with desired values.

Key Takeaways

Use nested list comprehensions to create matrices with independent rows and columns.
Avoid using multiplication of lists for matrix creation to prevent shared references.
The outer list comprehension creates rows; the inner creates columns.
Use _ as a variable when the index is not needed.
Customize the expression inside the inner list comprehension to fill the matrix as needed.