Функция sorted() в Python3
Описание
sorted()Функция выполняет операции сортировки над всеми итерируемыми объектами.
Разница между sort и sorted:
sort — это метод, применяемый к спискам, тогда как sorted может выполнять сортировку всех итерируемых объектов.
Метод sort списка работает с существующим списком, тогда как встроенная функция sorted возвращает новый список, а не работает с исходным.
Синтаксис
Синтаксис sorted:
sorted(iterable, key=None, reverse=False)
Описание параметра:
- iterable -- итерируемый объект.
- key — в основном используется для сравнения элементов, имеет только один параметр. Параметр конкретной функции берётся из итерируемого объекта и указывает элемент в итерируемом объекте, который будет использоваться для сортировки.
- reverse — правило сортировки: reverse = True для убывающего порядка, reverse = False для возрастающего порядка (по умолчанию).
Возвращаемое значение
Возвращает заново отсортированный список.
Пример
В следующем примере демонстрируется простейшее использование sorted:
[1, 2, 3, 4, 5] # по умолчанию — возрастающий порядок
Вы также можете использовать метод list.sort() списка. Этот метод изменяет исходный список (возвращает None). Обычно этот метод менее удобен, чем sorted() — если исходный список не нужен, list.sort() немного эффективнее.
>>> a.сортировка()
>>> a
[1,2,3,4,5]
Ещё одно различие: метод list.sort() определён только для списков, тогда как функция sorted() может принимать любой итерируемый объект.
[1, 2, 3, 4, 5]
Используйте key для сортировки в обратном порядке
>>> result_list = sorted(example_list, key=lambda x: x*-1)
>>> print(result_list)
[7, 6, 5, 4, 3, 2, 1, 0]
>>>
Для сортировки в обратном порядке также можно передать третий параметр reverse=True:
>>> sorted(example_list, reverse=True)
[7, 6, 5, 4, 3, 2, 1, 0]
Ниже приведён более сложный пример — сортировка таблицы медалей. Данные содержат сведения о золотых, серебряных и бронзовых медалях для 15 стран, используя\nв качестве разделителя:
Пример
stodata = s.split('\n',-1)
# Используйте sorted
para = {}
for line in range(len(stodata)):
# Каждая строка данных
data = stodata[line].split(' ')
print(data)
# Собрать структуру данных para={'China': [], 'Russia': []}
para[data[0]] = [int('-' + i) for i in data[1:]]
# Начать сортировку (x
new_para = sorted(para.items(), key=lambda x: (x[1], x[0]))
print()
c=[]
for i in new_para:
c.append((i[0]))
for j in range(15):
print(f"{(j+1):2d} {c[j]}")
Результат вывода:
['德国', '10', '11', '16'] ['意大利', '10', '10', '20'] ['荷兰', '10', '12', '14'] ['法国', '10', '12', '11'] ['英国', '22', '21', '22'] ['中国', '38', '32', '18'] ['日本', '27', '14', '17'] ['美国', '39', '41', '33'] ['俄罗斯奥委会', '20', '28', '23'] ['澳大利亚', '17', '7', '22'] ['匈牙利', '6', '7', '7'] ['加拿大', '7', '6', '11'] ['古巴', '7', '3', '5'] ['巴西', '7', '6', '8'] ['新西兰', '7', '6', '7'] 1 美国 2 中国 3 日本 4 英国 5 俄罗斯奥委会 6 澳大利亚 7 荷兰 8 法国 9 德国 10 意大利 11 加拿大 12 巴西 13 新西兰 14 古巴 15 匈牙利Другие расширения
Встроенные функции Python3