Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: А как вообще sorted в питоне как работает?

  1. А как вообще sorted в питоне как работает?

    Всем привет! Ребята, разбирался с Python'ом и наткнулся на функцию `sorted`. Круто, что она есть, но немного не понимаю, как она работает под капотом. Можете объяснить, как сортировка реализуется в Python? Какие там алгоритмы используются? И что происходит по шагам, когда мы вызываем `sorted`? Буду благодарен за примеры кода!



  2. Ждём вас в нашем чате в Телеграмм ==>> @pythoneer_chat

    А ТАКЖЕ: Канал о Python, статьи и книги ==>>
    @pythoneer_ru

  3. Привет! `sorted` в Python использует алгоритм Timsort, который был создан для оптимизации реальных данных и их перестановок. Начинается он с поиска уже отсортированных частей данных, а затем использует комбинацию merge sort и insertion sort.

    Пример использования:
    Программный код:
    items = [53142]
    sorted_items sorted(items)
    print(
    sorted_items)  # Вывод: [1, 2, 3, 4, 5] 
    Параметры `sorted`:
    - `key`: функция, которая будет вызвана для каждого элемента перед сортировкой.
    - `reverse`: если True, сортирует в обратном порядке.

    Надеюсь, это помогло!

    Для тех, кто хочет глубже, вот код с использованием key:
    Программный код:
    students = [{'name''John''score'90},
                {
    'name''Alice''score'100},
                {
    'name''Bob''score'70}]
    sorted_students sorted(studentskey=lambda studentstudent['score'])
    print(
    sorted_students

  4. Цитата Сообщение от Жираф
    Привет! `sorted` в Python использует алгоритм Timsort, который был создан для оптимизации реальных данных и их перестановок. Начинается он с поиска уже отсортированных частей данных, а затем использует комбинацию merge sort и insertion sort.

    Пример использования:
    Программный код:
    items = [53142]
    sorted_items sorted(items)
    print(
    sorted_items)  # Вывод: [1, 2, 3, 4, 5] 
    Параметры `sorted`:
    - `key`: функция, которая будет вызвана для каждого элемента перед сортировкой.
    - `reverse`: если True, сортирует в обратном порядке.

    Надеюсь, это помогло!

    Для тех, кто хочет глубже, вот код с использованием key:
    Программный код:
    students = [{'name''John''score'90},
                {
    'name''Alice''score'100},
                {
    'name''Bob''score'70}]
    sorted_students sorted(studentskey=lambda studentstudent['score'])
    print(
    sorted_students
    Это четко! Timsort действительно мощно оптимизирован под реальные данные. Круть!

  5. `sorted` – это просто магия Python! Он использует Timsort, который комбинирует merge и insertion sort. Все происходит на уровне C. Сначала делит список на "natural runs", а потом объединяет.

    Код:
    Программный код:
    data = [41632]
    sorted_data sorted(data
    Вывод: [1, 2, 3, 4, 6]

  6. Цитата Сообщение от Петр Сергеевич
    `sorted` – это просто магия Python! Он использует Timsort, который комбинирует merge и insertion sort. Все происходит на уровне C. Сначала делит список на "natural runs", а потом объединяет.

    Код:
    Программный код:
    data = [41632]
    sorted_data sorted(data
    Вывод: [1, 2, 3, 4, 6]
    Вообще, круто, что "natural runs" используются. Это позволяет хорошо справляться с уже отсортированными частями данных.

  7. Я бы добавил, что `sorted` еще может принимать функцию в параметр `key`, чтобы сортировать не по значению, а по какому-то критерию. Например:

    Программный код:
    fruits = ['apple''orange''banana']
    sorted_fruits sorted(fruitskey=len)
    print(
    sorted_fruits)  # ['apple', 'banana', 'orange'] 

  8. Цитата Сообщение от Оксана ив
    Я бы добавил, что `sorted` еще может принимать функцию в параметр `key`, чтобы сортировать не по значению, а по какому-то критерию. Например:

    Программный код:
    fruits = ['apple''orange''banana']
    sorted_fruits sorted(fruitskey=len)
    print(
    sorted_fruits)  # ['apple', 'banana', 'orange'] 
    Хороший пример с key! Это реально важно для кастомных сортировок.

  9. Да, Timsort! Никогда не задумывался, что в Python такое серьезное внимание к оптимизации сортировки. Timsort - это же идеальное сочетание правильных алгоритмов, вставка и слияние.

    Пример:
    Программный код:
    numbers = [103629]
    sorted_numbers sorted(numbersreverse=True)
    print(
    sorted_numbers
    Вывод: [10, 9, 6, 3, 2]

  10. Цитата Сообщение от СумеречныйВампир
    Да, Timsort! Никогда не задумывался, что в Python такое серьезное внимание к оптимизации сортировки. Timsort - это же идеальное сочетание правильных алгоритмов, вставка и слияние.

    Пример:
    Программный код:
    numbers = [103629]
    sorted_numbers sorted(numbersreverse=True)
    print(
    sorted_numbers
    Вывод: [10, 9, 6, 3, 2]
    Всегда забываю про параметр reverse. Кстати, callback функция в key тоже может быть полезной для обратной сортировки.

Страница 1 из 2 12 ПоследняяПоследняя