Home > Backend Development > Python Tutorial > How Can I Sort Multiple Lists in Python While Maintaining Alignment?

How Can I Sort Multiple Lists in Python While Maintaining Alignment?

Susan Sarandon
Release: 2024-12-28 17:10:17
Original
589 people have browsed it

How Can I Sort Multiple Lists in Python While Maintaining Alignment?

Sorting Lists While Preserving Alignment

When working with multiple parallel lists, it can be necessary to sort one list while maintaining the corresponding order of elements in the other lists. To achieve this, we present two classic approaches.

The "Decorate, Sort, Undecorate" Idiom

This technique simplifies the task using Python's built-in zip function, which combines elements from multiple lists into tuples:

list1 = [3, 2, 4, 1, 1]
list2 = ['three', 'two', 'four', 'one', 'one2']
list1, list2 = zip(*sorted(zip(list1, list2)))
Copy after login

After sorting the tuples by the first element (list1), the order is applied to both lists.

In-Place Sorting

For increased speed, you can use an in-place sorting approach:

tups = zip(list1, list2)
tups.sort()
result1, result2 = zip(*tups)
Copy after login

This approach typically outperforms the one-line version for small lists but becomes comparable for larger lists due to Python's optimized zip routines.

Alternative Approaches

  1. Sorting Indices: If comparing elements of the second list is inefficient or unsupported, sort the indices instead and use them to reorder the lists.
  2. Key Function: Define a key function that sorts based on the first list without comparing elements of the second list:
list1 = [3, 2, 4, 1, 1]
list2 = [num * num for num in list1]
result1, result2 = zip(*sorted(zip(list1, list2), key=lambda x: x[0]))
Copy after login

The above is the detailed content of How Can I Sort Multiple Lists in Python While Maintaining Alignment?. 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