Модуль 9.6 Сортировка с помощью sort и sorted.
Отметьте все пункты, справедливые для метода sort и функции sorted.
функция sorted возвращает отсортированный список для итерируемого объекта
метод sort сортирует список, для которого вызывается
метод sort применим только к спискам (среди базовых типов данных)
На вход поступает список целых чисел, записанных в одну строчку через пробел. Преобразуйте сначала эту строку в список из целых чисел, а затем список в кортеж из целых чисел. То есть, в программе будет две разные коллекции: список и кортеж. Отсортируйте по возрастанию значений эти коллекции методом sort, если это возможно, а иначе — примените функцию sorted.
На экран ничего выводить не нужно, только сформировать две отсортированные коллекции: lst (список) — результат сортировки списка; tp_lst (кортеж) — результат сортировки кортежа.
P. S. На результаты сортировок обязательно должны ссылаться переменные с именами lst и tp_lst!
# ввод строки в переменную s (переменную в программе не менять) s = input() # Преобразуем её в список int_list = list(map(int, s.split())) # Преобразуем список в кортеж int_tuple = tuple(int_list) # Сортируем список методом sort, если это возможно, иначе - функцией sorted if hasattr(int_list, 'sort'): # Проверяем, что метод sort существует для списка int_list.sort() else: int_list = sorted(int_list) # Сортируем кортеж, используя функцию sorted, так как у кортежа нет метода sort int_tuple = tuple(sorted(int_tuple)) # Присваиваем отсортированные значения переменным lst и tp_lst соответственно lst = int_list tp_lst = int_tuple
На вход функции с именем get_sort поступает словарь, например, такой:
d = {'cat': 'кот', 'horse': 'лошадь', 'tree': 'дерево', 'dog': 'собака', 'book': 'книга'}
Необходимо отсортировать словарь d по убыванию ключей (лексикографическая сортировка строк) и возвратить список из соответствующих значений ключей словаря. Например, для указанного словаря d, результатом должен быть список:
[‘дерево’, ‘лошадь’, ‘собака’, ‘кот’, ‘книга’]
Сигнатура функции get_sort должна быть следующей:
def get_sort(d): …
В программе только определить функцию, вызывать ее не нужно и что-либо выводить на экран тоже не нужно.
P. S. Подсказка: список в функции get_sort лучше всего формировать с помощью генератора списков.
def get_sort(d): # Создаём список из значений словаря, отсортированных по убыванию ключей values_sorted = [d[key] for key in sorted(d.keys(), reverse=True)] return values_sorted
На вход программы поступает список целых чисел, записанных в одну строчку через пробел. Необходимо выбрать из них четыре наибольших уникальных значения. Результат вывести на экран в порядке их убывания в одну строчку через пробел.
# Считываем список целых чисел из входной строки lst = list(map(int, input().split())) # Создаём множество уникальных значений из списка unique_values = set(lst) # Сортируем множество по убыванию значений и берём первые 4 элемента result = sorted(unique_values, reverse=True)[:4] # Выводим результат на экран в одну строку через пробел print(*result)
На вход программы поступают два списка целых чисел (каждый в отдельной строке), записанных в одну строчку через пробел. Длины списков могут быть разными. Необходимо первый список отсортировать по возрастанию, а второй — по убыванию. Полученные пары из обоих списков сложить друг с другом и получить новый список чисел. Результат вывести на экран в виде строки чисел через пробел.
P. S. Подсказка: не забываем про функцию zip.
# Считываем две строки с числами, записанными через пробел, и преобразуем их в списки целых чисел list1 = list(map(int, input().split())) list2 = list(map(int, input().split())) # Сортируем первый список по возрастанию list1.sort() # Сортируем второй список по убыванию list2.sort(reverse=True) # С помощью функции zip объединяем отсортированные списки в кортежи пар чисел и суммируем их sum_pairs = [x + y for x, y in zip(list1, list2)] # Преобразуем список сумм в строку чисел через пробел и выводим на экран print(' '.join(map(str, sum_pairs)))
На вход программы поступает список товаров в формате:
название_1:цена_1
…
название_N:цена_NНеобходимо преобразовать этот список в словарь, ключами которого выступают цены (целые числа), а значениями — соответствующие названия товаров. Необходимо написать функцию, которая бы принимала на входе словарь и возвращала список из наименований трех наиболее дешевых товаров.
Вызовите эту функцию и отобразите на экране полученный список в порядке возрастания цены в одну строчку через пробел.
P. S. Для считывания списка целиком в программе уже записаны начальные строчки.
import sys # считывание списка из входного потока lst_in = list(map(str.strip, sys.stdin.readlines())) # определение функции get_cheap, которая принимает список lst, # преобразует его в словарь, в котором ключами являются цены (целые числа), # а значениями - соответствующие названия товаров, # и возвращает список из наименований трех наиболее дешевых товаров def get_cheap(lst): # создание словаря d с помощью функции dict, # которая принимает список кортежей, получаемых из списка lst с помощью функции map # lambda-функция, передаваемая в map, разбивает строки на пары "название:цена" # затем каждая пара преобразуется в кортеж (название, цена), # а затем словарь создается из полученных кортежей d = dict(map(lambda x: (int(x[1]), x[0]), map(lambda y: y.split(':'), lst))) # цикл по отсортированному по ключам словарю d # для каждого элемента (ключ k и значение v) вызывается функция yield # чтобы вернуть соответствующее значение v, # наименьшие три значения будут возвращены при первых трех вызовах функции next() for k, v in sorted(d.items()): yield v # создание генератора x, который содержит список из наименований трех наиболее дешевых товаров x = get_cheap(lst_in) # вывод на экран первых тех элементов из списка x, которые будут возвращены функцией next(), # идущих через пробел for _ in range(3): print(next(x), end=' ')
Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы