Home > Backend Development > Python Tutorial > How Can I Efficiently Transpose a List of Lists in Python?

How Can I Efficiently Transpose a List of Lists in Python?

Barbara Streisand
Release: 2024-12-27 11:05:09
Original
212 people have browsed it

How Can I Efficiently Transpose a List of Lists in Python?

Transposing a List of Lists: A Pythonic Approach

Given a list of lists, such as:

l = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Copy after login

we aim to transpose it, resulting in:

r = [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
Copy after login

Zipping and Unpacking to the Rescue

Python provides a powerful tool called zip that allows us to combine multiple iterables, creating a zip object that iterates over the elements in parallel. The key insight is to unzip the list of lists using zip and then convert the resulting tuples into lists.

Python 3 and Jagged Tables

For Python 3, we have two options:

list(map(list, zip(*l)))
Copy after login

This approach may short-circuit for jagged tables (where lists have different lengths).

list(map(list, itertools.zip_longest(*l, fillvalue=None)))
Copy after login

This handles jagged tables by filling shorter lists with None.

Python 2 and Homogeneous Tables

In Python 2, the simpler approach works well for homogeneous tables:

map(list, zip(*l))
Copy after login

Unveiling the Magic

To understand the process, consider the first approach in Python 3:

  • We unpack the list of lists using *l, passing each inner list as a separate argument to zip.
  • zip creates a zip object that combines the elements of the inner lists, yielding tuples: (1, 4, 7), (2, 5, 8), (3, 6, 9).
  • The map function applies the list function to each tuple, converting it back to a list.
  • The result is a list of lists, as desired.

Handling Jagged Tables

itertools.zip_longest handles jagged tables by filling shorter lists with the specified fill value (default: None). It ensures that all lists in the transposed result have the same length.

Conclusion

Transposing a list of lists is a common task in data manipulation. By leveraging the power of zip and understanding its behavior, we can implement efficient solutions in Python.

The above is the detailed content of How Can I Efficiently Transpose a List of Lists in Python?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template