В этом уроке мы обсудим, как отсортировать список кортежей в Python, используя несколько методов. Однако сначала мы начнем с использования функции sorted() в Python.
- Способ 1: использование функции sorted()
- Метод 2: использование метода sort() списка
- Метод-3: использование sorted() с ключевым аргументом
- Метод 4: использование метода itemgetter()
- Способ 5: использование пузырьковой сортировки
- Метод 6: использование двух элементов
- Способ 7: использование функции len()
Способ 1: использование функции sorted()
Функция sorted() — это встроенная функция Python, которая возвращает отсортированный список из любой итерации. Чтобы отсортировать список кортежей, мы можем просто передать список в качестве аргумента функции sorted().
По умолчанию кортежи будут отсортированы по их первым элементам в порядке возрастания.
# Sort a list of tuples by the first element of each tuple list_of_tuples = [(1, "USA"),(3, "United Kingdom"),(2, "Brazil")] # Sort the list of tuples by the first element of each tuple sorted_list = sorted(list_of_tuples) # Print the sorted list of tuples print(sorted_list)
Приведенный выше код печатает отсортированный список, который представляет собой список кортежей, отсортированных по их первому элементу.
Output: [(1, 'USA'),(2, 'Brazil'),(3, 'United Kingdom')]
Метод 2: использование метода sort() списка
Метод sort() сортирует элементы списка на месте, то есть изменяет исходный список.
# Create a list of tuples list_of_tuples = [(1, "USA"),(3, "United Kingdom"),(2, "Brazil")] # Sort the list of tuples in place by the first element of each tuple list_of_tuples.sort() # Print the sorted list of tuples print(list_of_tuples)
Приведенный выше код создает список кортежей, каждый из которых содержит целое число и строку. Список сортируется по месту на основе первого элемента каждого кортежа (целого числа), и отсортированный список выводится на консоль.
Output: [(1, 'USA'),(2, 'Brazil'),(3, 'United Kingdom')]
Метод-3: использование sorted() с ключевым аргументом
Возможно, нам захочется отсортировать кортежи по элементам, отличным от первого элемента. Для этого мы можем использовать ключевой аргумент функции sorted(). Ключевой аргумент принимает функцию, которая определяет, как следует сортировать элементы.
# Sort the list of tuples based on the second element of the tuples(x[1]) list_of_tuples = [(1, "USA"),(3, "United Kingdom"),(2, "Brazil")] # Use sorted function with key parameter set to a lambda function # The lambda function returns the second element of the tuple(x[1]) sorted_list = sorted(list_of_tuples, key=lambda x: x[1]) # Print the sorted list of tuples print(sorted_list)
Приведенный выше код определяет список кортежей, где каждый кортеж содержит целое число и строку. Функция sorted используется для сортировки списка кортежей, где ключом сортировки является строка(т. е. x[1]). Затем распечатывается отсортированный список кортежей.
Output: [(2, 'Brazil'),(1, 'USA'),(3, 'United Kingdom')]
Метод 4: использование метода itemgetter()
Функция itemgetter() из модуля оператора — это еще один способ сортировки списка кортежей в Python.
Эта функция возвращает вызываемый объект, который извлекает элемент по указанному индексу из объекта.
# Import the 'operator' module from operator import itemgetter # List of tuples students = [("James", 20),("Alex", 19),("Jonny", 21),("Messi", 18)] # Sort the list of tuples by the second element(age) in each tuple sorted_students = sorted(students, key=itemgetter(1)) print("Sorted list of tuples:", sorted_students)
Приведенный выше код сортирует список кортежей, содержащих имена учащихся и их возраст, в порядке возрастания по их возрасту.
Output: Sorted list of tuples: [('Messi', 18),('Alex', 19),('James', 20),('Jonny', 21)]
Способ 5: использование пузырьковой сортировки
Пузырьковая сортировка — это простой алгоритм сортировки, который работает путем многократной замены соседних элементов, если они расположены в неправильном порядке. Его можно использовать для сортировки списка кортежей в Python.
# This code implements the bubble sort algorithm to sort a list of tuples based on the second element of each tuple # Define the bubbleSort function def bubbleSort(list_of_tuples): # Determine the number of elements in the list n = len(list_of_tuples) # Loop through the elements in the list for i in range(n): # Loop through the list from 0 to n - i - 1, comparing each pair of adjacent elements for j in range(0, n - i - 1): # If the second element of the current tuple is greater than the second element of the next tuple, swap them if list_of_tuples[j][1] > list_of_tuples[j + 1][1]: list_of_tuples[j], list_of_tuples[j + 1] = list_of_tuples[j + 1], list_of_tuples[j] # Return the sorted list of tuples return list_of_tuples # Define the list of tuples list_of_tuples = [("John", 20),("Jane", 25),("Jim", 15)] # Call the bubbleSort function to sort the list sorted_list = bubbleSort(list_of_tuples) # Print the sorted list of tuples print("Sorted list of tuples:", sorted_list)
В приведенном выше коде определяется функция bubbleSort, которая сортирует список кортежей на основе второго элемента (индекс 1) каждого кортежа с использованием алгоритма пузырьковой сортировки.
- Входной список повторяется дважды, и соседние элементы меняются местами, если второй элемент первого кортежа больше, чем второй элемент второго кортежа.
- Отсортированный список возвращается в качестве вывода. Затем код создает образец списка кортежей и вызывает для него функцию bubbleSort, печатая отсортированный список в качестве вывода.
Output: Sorted list of tuples: [('Jim', 15),('John', 20),('Jane', 25)]
Метод 6: использование двух элементов
Сортировка списка кортежей по двум элементам также возможна в Python. Один из способов сделать это — использовать функцию sorted и лямбда-функцию, чтобы указать оба элемента для сортировки.
# The code sorts a list of tuples based on the first and second elements of each tuple list_of_tuples = [("John", 20),("Jane", 25),("Jim", 15)] # The sorted function sorts the list_of_tuples based on the lambda function x:(x[0], x[1]). # This lambda function returns the tuple(x[0], x[1]) as the sorting key. # The x[0] is the first element of each tuple, which is the name, and x[1] is the second element of each tuple, which is the age. # The sorting key is based on both the first and second elements of the tuples. sorted_list = sorted(list_of_tuples, key=lambda x:(x[0], x[1])) # The sorted list is then printed to the console print("Sorted list of tuples:", sorted_list)
Приведенный выше код сортирует список кортежей на основе первого элемента каждого кортежа, а в случае связи (т. е. если два кортежа имеют одинаковый первый элемент) он сортирует список на основе второго элемента каждого кортежа.
- Функция sorted используется с лямбда-функцией в качестве ключа, который определяет критерии сортировки, в данном случае сортировка сначала на основе первого элемента, а затем на основе второго элемента. Затем отсортированный список распечатывается.
Output: Sorted list of tuples: [('Jane', 25),('Jim', 15),('John', 20)]
Способ 7: использование функции len()
Вы также можете отсортировать список кортежей по длине одного из элементов кортежа. Это полезно, если кортежи содержат строки и вы хотите отсортировать их по длине строки.
# This code sorts a list of tuples based on the length of the second element(string) in each tuple # Define a list of tuples, where each tuple contains a name and a greeting list_of_tuples = [("John", "hello"),("Jane", "hi"),("Jim", "hey")] # Sort the list of tuples based on the length of the second element(greeting string) using the lambda function sorted_list = sorted(list_of_tuples, key=lambda x: len(x[1])) # Print the sorted list of tuples print("Sorted list of tuples:", sorted_list)
Приведенный выше код сортирует список кортежей по длине второго элемента в каждом кортеже.
- Список list_of_tuples содержит кортежи с двумя элементами, строкой и еще одной строкой.
- Функция sorted используется для сортировки списка, при этом ключ в качестве аргумента имеет значение лямбда x: len(x[1]), что указывает, что сортировка должна основываться на длине второго элемента каждого кортежа.