Как сбросить стек TCP/IP в Windows 10

Интернет работает по протоколу TCP/IP. Если стек протокола TCP/IP не работает правильно в Windows 10 или любой другой операционной системе, такой как Linux или MacOS, у вас возникнут проблемы с подключением к Интернету. Лучший способ решить проблемы с Интернетом — сбросить настройки стека TCP/IP.

Это повреждение в стеке служб TCP/IP может быть вызвано различными факторами, такими как установка программного обеспечения, изменяющего сетевые настройки в Windows, вирусы и вредоносное ПО, повреждение реестра Windows и т. д.

Нет прямого способа сбросить интернет-протоколы в Windows 10. Интернет-протокол TCP/IP хранит некоторые сетевые данные локально, которые могут быть повреждены.

Если ваше Интернет-соединение не работает должным образом и вы получаете сообщение «Этот сайт недоступен», хотя Windows показывает, что вы подключены к Интернету.

Сброс стека TCP/IP возможен с помощью командной строки в Windows. Давайте пройдемся по процессу и избавим наше интернет-соединение от ошибок.

Что такое протокол TCP/IP?

Протокол управления передачей/Интернет-протокол отвечает за перенос пакетов от одного источника к месту назначения. Этот протокол включает трехстороннее рукопожатие, что означает, что перед обменом фактической информацией происходит обмен тремя пакетами между источником и целью. Это рукопожатие предназначено для установления доверия между двумя устройствами.

Многократное повторение этих рукопожатий значительно увеличит трафик в сети. Следовательно, данные кэшируются и хранятся локально, чтобы избежать ненужной транспортировки пакетов.

Более того, протокол TCP/IP работает аналогично эталонной модели OSI. Это означает, что у него есть собственный набор правил и положений, которые он устанавливает для связи между устройствами. Это называется стеком. Кэш TCP/IP относится к хранимым в устройстве данным, которые он использует для маршрутизации пакетов.

Когда и почему следует сбрасывать стек TCP/IP

Со временем Windows сохраняет кэш сетевых данных, включая IP-адреса. В системном реестре также есть параметры, которые напрямую связаны с интернет-протоколом. В любой момент они могут быть повреждены, что приведет к невозможности подключения к Интернету, даже если все остальные настройки выполнены правильно.

Повреждение стека может даже быть причиной того, что трафик вашего компьютера направляется на старый IP-адрес и не может обновить новый в кеше.

Иногда недостаточно изменить IP-адрес вашего компьютера или просто перезапустить его. Именно тогда пользователь должен прибегнуть к этому решению и сбросить свои настройки TCP / IP.

Как сбросить стек TCP/IP в Windows 10

Как мы упоминали ранее, Microsoft не предоставила простой способ сбросить интернет-протокол. Однако мы все еще можем сделать это с помощью команды netsh в командной строке.

Команду netsh можно использовать для просмотра или настройки сетевых параметров в среде Windows, указав правильные параметры.

Обратите внимание, что этот процесс удалит все текущие конфигурации всех сетевых портов на вашем устройстве, включая все неактивные, а также виртуальные сетевые адаптеры. Следовательно, их нужно будет перенастроить после завершения процесса. Более того, операция также требует перезагрузки системы, поэтому рекомендуется сохранить ваши данные, прежде чем продолжить.

  1. Откройте командную строку с правами администратора.
  2. Введите ipconfig /release, чтобы удалить текущие настройки IP.

  3. Введите ipconfig /flushdns, чтобы удалить кеш DNS.

  4. Введите netsh winsock reset для сброса кеша Windows Sockets API.

  5. Введите netsh int ip reset, чтобы сбросить кеш стека TCP/IP. Пока не перезагружайте компьютер.

  6. Введите ipconfig /renew, чтобы запросить новые параметры IP с сервера.

  7. Перезагрузите компьютер.

Если вы хотите автоматизировать процесс, просто скопируйте и вставьте вышеупомянутую команду в текстовый документ и сохраните ее с любым именем по вашему выбору, заканчивающимся на .bat. Это создаст командный файл, который выполнит все команды внутри, когда вы дважды щелкните его.

Например, скрипт может выглядеть так:

@echo off



echo "Сброс настроек TCP/IP by ip-calculator.ru"



TIMEOUT /T 5



echo "Завершаем все сетевые соединения"

ipconfig /release



pause

echo "Очищаем кэш DNS"

ipconfig /flushdns



pause

echo "Сбрасываем кэш Win Sockets API"

netsh winsock reset



pause

echo "Сбрасываем кэш TCP/IP"

netsh int ip reset



pause

echo "Устанавливаем сетевые соединения заново"

ipconfig /renew

Если вы по-прежнему не можете получить доступ к Интернету, вы можете полностью сбросить настройки сети Windows.

TCP/IP — это душа компьютерных сетей; без него доступ в Интернет был бы невозможен. Рекомендуется поддерживать сетевой кэш вашей системы и оптимизировать его для повышения производительности.

Инструкция по сбросу протокола актуальна для всех версий Windows. На видео заснят процесс сброса на Windows 7.



2020-10-05T12:06:33
Вопросы читателей

Как проверить и контролировать состояние оперативной памяти в Windows 10

Если у вас есть синий экран смерти (BSoD) с кодом остановки, который упоминает «Управление памятью» в качестве виновника, или вы сталкиваетесь со случайными сбоями и зависаниями системы при использовании тяжелых приложений, скорее всего, у вас есть неисправный модуль ОЗУ на вашем компьютере. ПК.

Лучший способ подтвердить это — запустить диагностический тест памяти.

Проверки памяти Windows инструмент является встроенная утилита , которая проводит стресс-тесты на вашем оборудовании памяти и представляет свои выводы.

Давайте посмотрим, как этот инструмент можно использовать в наших интересах.

Зачем использовать средство диагностики памяти Windows

Модули памяти на вашем компьютере напрямую влияют на общую производительность системы. Его скорость и эффективность определяются многими факторами, в том числе оперативной памятью. Все приложения, программы и службы, которые не загружаются на жесткий диск, выполняются в оперативной памяти. Следовательно, это критически важный компонент общей аппаратной инфраструктуры ПК.

Обязательно убедитесь, что он работает в правильных условиях, таких как правильная температура, уровень влажности и тактовая частота. Чрезмерное использование ОЗУ или модулей памяти, используемых в течение более длительного периода времени, в конечном итоге имеет тенденцию к износу из-за большого количества операций чтения и записи.

Вот почему нам нужно использовать средство диагностики памяти Windows для проверки ОЗУ. Лучше использовать этот инструмент как проактивный подход, чем как реактивный. Это означает, что для проверки состояния ОЗУ следует проводить периодические тесты, а не только при возникновении критической ошибки.

Наблюдение за состоянием памяти может спасти вас от ужасного BSoD, поддерживая под контролем рабочую температуру и тактовую частоту.

Как использовать средство диагностики памяти Windows для проверки работоспособности ОЗУ в Windows 10

Как мы уже упоминали, эта утилита предустановлена ​​в Windows 10. Следовательно, больше ничего загружать или устанавливать не требуется. Однако этот процесс требует перезапуска вашей системы. Поэтому рекомендуется сохранить все ваши данные перед продолжением.

  1. Откройте меню «Пуск», найдите «Диагностика памяти Windows» и нажмите Enter.

  2. В окне диагностики памяти Windows нажмите «Перезагрузить сейчас» и проверьте наличие проблем.

  3. Теперь компьютер перезагрузится, и тест начнется автоматически. Для завершения этого этапа может потребоваться некоторое время.



    Вы также можете нажать функциональную клавишу F1, чтобы изменить тест со стандартного на расширенный, расширенный — это более глубокий тест для модулей памяти.
  4. После завершения сканирования на машине загрузится Windows. Войдите в свою учетную запись, и вы увидите результаты сканирования, но только в том случае, если с тестом возникнут проблемы. В противном случае вам будет предложено уведомление в области уведомлений о том, что «Проблем не обнаружено».
  5. Если вы все еще хотите просмотреть результаты вручную, перейдите в Средство просмотра событий, выполнив поиск в меню «Пуск».

  6. На левой панели перейдите к:

    Windows logs -> System
  7. На средней панели щелкните MemoryDisgnostics-Results на вкладке Source.

  8. В информационном разделе ниже вы можете найти более подробные результаты сканирования памяти.

  9. Вы также можете переключиться с вкладки «Общие» на вкладку «Подробности», чтобы просмотреть анализ теста.

Так как наша оперативная память не имела сбойных секторов и работала нормально, результаты не показали ничего подозрительного и прошли проверку.

Заключительные слова

Иногда простой очистки модулей ОЗУ недостаточно для устранения неполадок вашего ПК. Часто неправильно настроенные или разогнанные модули памяти серьезно влияют на работу вашего оборудования. Чтобы держать их под контролем, важно получить полное представление о текущем состоянии модулей.

Хотя в Интернете есть множество бесплатных и платных приложений для предоставления статистики оборудования системы в реальном времени, нет ничего лучше встроенной утилиты, предоставляемой Microsoft для тех, кто не доверяет сторонним утилитам.



2020-10-05T11:40:02
Вопросы читателей

🔐 Настройка входа по SSH без пароля для нескольких удаленных серверов с помощью скрипта

Аутентификация на основе ключей SSH (также известная как аутентификация с открытым ключом) позволяет использовать аутентификацию без пароля, и это более безопасное и гораздо лучшее решение, чем аутентификация по паролю.

Одним из основных преимуществ входа в систему без пароля по SSH, не говоря уже о безопасности, является то, что он позволяет автоматизировать различные виды межсерверных процессов.

В этой статье мы продемонстрируем, как создать пару ключей SSH и скопировать открытый ключ на несколько удаленных хостов Linux одновременно с помощью скрипта шелла.

Создайте новый ключ SSH на Linux

Сначала сгенерируйте пару ключей SSH (закрытый ключ / ключ идентификации, который SSH-клиент использует для аутентификации при входе на удаленный SSH-сервер, и открытый ключ, хранящийся в качестве авторизованного ключа в удаленной системе, на которой запущен SSH-сервер), используя ssh- keygen следующим образом:

# ssh-keygen




Создание скрипта bash для нескольких удаленных входов

Затем создайте скрипт, который поможет скопировать открытый ключ на несколько удаленных хостов Linux.

# vim ~/.bin/ssh-copy.sh

Скопируйте и вставьте следующий код в файл (замените следующие переменные соответственно USER_NAME – имя пользователя для подключения, HOST_FILE – файл, содержащий список имен хостов или IP-адресов, и ERROR_FILE – файл для хранения любых ошибок команды ssh).

#!/bin/bash

USER_NAME="root"

HOST_FILE="/root/hosts"

ERROR_FILE="/tmp/ssh-copy_error.txt"

PUBLIC_KEY_FILE="$1"



if [ ! -f  $PUBLIC_KEY_FILE ]; then

        echo "File '$PUBLIC_KEY_FILE' не найден!"

        exit 1

fi



if [ ! -f $HOST_FILE ]; then

        echo "File '$HOST_FILE' не найден!"

        exit 2

fi



for IP in `cat $HOST_FILE`; do

        ssh-copy-id -i $PUBLIC_KEY_FILE $USER_NAME@$IP 2>$ERROR_FILE

        RESULT=$?

        if [ $RESULT -eq 0 ]; then

                echo ""

                echo "Открытый ключ успешно скопирован на $IP"

                echo ""

        else

                echo "$(cat  $ERROR_FILE)"

                echo 

                exit 3

        fi

        echo ""

done

Сохраните файл и закройте его.

Затем сделайте скрипт исполняемым с помощью команды chmod, как показано далее:

# chmod +x ssh-copy.sh

Теперь запустите скрипт ssh-copy.sh и укажите свой файл открытого ключа в качестве первого аргумента, как показано ниже:

# ./ssh-copy.sh /root/.ssh/prod-rsa.pub

Затем используйте ssh-agent для управления своими ключами, который хранит ваш расшифрованный закрытый ключ в памяти и использует его для аутентификации логинов.

После запуска ssh-agent добавьте к нему свой закрытый ключ следующим образом:

# eval "$(ssh-agent -s)"

# ssh-add  ~/.ssh/prod_rsa

Вход на удаленный сервер Linux без пароля

Теперь вы можете войти на любой из своих удаленных хостов, не вводя пароль для аутентификации пользователя SSH.

Таким образом, вы можете автоматизировать межсерверные процессы.

# ssh root@10.2.32.12

Если у вас есть какие-либо особые возможности для улучшения скрипта, сообщите нам об этом через форму обратной связи ниже.

 





2020-10-05T11:36:32
Скрипты

💉 Как провести аудит NoSQL на предмет уязвимостей?

SQL-инъекция – один из популярных методов атаки, но он применяется не только в SQL (реляционная база данных), но и в NoSQL (не-SQL или также известная как нереляционная база данных).

Знаете ли вы, что сегодня доступно более 100 баз данных NoSQL?

Спасибо сообществу разработчиков ПО с открытым исходным кодом.

О каком из них вы слышали?

Вероятно, MongoDB и Redis!

Да, они очень популярны.

NoSQL не новость;

Впервые он был представлен в 1998 году Карло Строцци.

Но в последнее время он приобрел большую популярность благодаря использованию в современных приложениях.

И почему бы нет.

Они быстрые и решают некоторые традиционные проблемы с реляционными базами данных.

Существуют различия между SQL и NoSQL.

Более подробно вы можете узнать тут:

Если вы используете базу данных NoSQL, такую как  например MongoDB, и не уверены, подходят ли они для продакшена – выявляйте уязвимости, неправильную конфигурацию и т. д.

Следующие инструменты могут помочь вам в их поиске.

NoSQLMap

NoSQLMap – это крошечная утилита с открытым исходным кодом, основанная на Python, способная проводить аудит на предмет неправильной конфигурации и автоматизировать атаки с использованием инъекций.

На данный момент он поддерживает следующие базы данных.

  • MongoDB
  • CouchDB
  • Redis
  • Cassandra

Для установки NoSQLMap вам понадобится модуль Git, Python и Setuptools, которые вы можете установить ниже на примере Ubuntu.

apt-get install python

apt-get install python-setuptools

После установки Python следуйте инструкциям по установке NoSQLMAP.

git clone https://github.com/codingo/NoSQLMap.git

python setup.py install

После этого вы можете запустить ./nosqlmap.py из клонированного каталога GIT:

_  _     ___  ___  _    __  __

| | |___/ __|/ _ | |  |  /  |__ _ _ __

| .` / _ __  (_) | |__| |/| / _` | '_ 

|_|____/___/_______|_|  |___,_| .__/

 v0.7 codingo@protonmail.com        |_|





1-Set options

2-NoSQL DB Access Attacks

3-NoSQL Web App attacks

4-Scan for Anonymous MongoDB Access

5-Change Platform (Current: MongoDB)

x-Exit

Select an option:

Вам необходимо установить цель, перейдя к варианту 1 перед тестированием.

Mongoaudit

Как можно догадаться по названию, он специфичен для MongoDB.

Mongoaudit хорош для выполнения пентеста, чтобы найти ошибки, неправильную конфигурацию и потенциальные риски.

Он проверяется на соответствие многим передовым практикам, включая следующие.

  • Работает ли MongoDB на порту по умолчанию и включен интерфейс HTTP

  • Защищена ли база с помощью TLS, аутентификации

  • Метод аутентификации

  • CRUD операции

Установить Mongoaudit очень просто.

Вы можете использовать команду pip.

pip install mongoaudit

После установки выполните команду mongoaudit, чтобы запустить сканирование.

Вам будет предложено выбрать уровень сканирования и ввести сведения о MongoDB.

Какой бы инструмент вы ни использовали для сканирования безопасности баз данных NoSQL, не забывайте нести ответственность.

Вы должны убедиться, что работаете со своим собственным экземпляром базы данных или авторизованы для запуска теста.

И ознакомьтесь с этой статьей, чтобы найти уязвимость SQL-инъекций в реляционной базе данных.



2020-10-05T09:52:32
Аудит ИБ

Как создать гостевую учетную запись Windows 10

Одним из наиболее важных правил управления пользователями Windows 10 является использование надежного пароля для вашей учетной записи. Вы не должны сообщать свой пароль другим пользователям ПК, особенно если у них есть собственные учетные записи Microsoft. Если они этого не сделают, вы можете настроить Windows 10 без учетной записи Microsoft, если они собираются часто использовать ваш компьютер.

Однако для гостевых пользователей вы, вероятно, не захотите каждый раз создавать совершенно новую учетную запись. Вместо этого вы можете настроить выделенную гостевую учетную запись Windows 10. Эта учетная запись имеет ограниченный доступ к настройкам, но позволяет пользователям запускать уже установленное программное обеспечение и выходить в Интернет.

Зачем использовать гостевую учетную запись Windows 10

Предыдущие версии Windows предлагали выделенную гостевую учетную запись в качестве стандартной функции. Это было в те дни, когда портативные устройства, такие как смартфоны и планшеты, еще не были реальностью, поэтому делиться своим компьютером с друзьями или семьей имело больше смысла.

К сожалению, Microsoft отказалась от этой функции для Windows 10. Чтобы создать гостевую учетную запись Windows 10, вам необходимо создать стандартную локальную учетную запись (не связанную с какой-либо учетной записью Microsoft) и настроить правильные пользовательские условия для предотвращения административного доступа, такие как возможность установить новые приложения или изменить настройки системы.

Это важно, потому что не у всех есть собственный компьютер или мобильное устройство. У вас могут быть родственники, которым нужен доступ в Интернет, но вы не хотите делиться своей учетной записью. Кроме того, вы можете быть владельцем бизнеса, которому нужен ПК с ограниченной учетной записью, доступной для гостей.

Поскольку для пользователей Windows 10 нет встроенной гостевой учетной записи, вам придется импровизировать. Следуя приведенным ниже инструкциям, вы можете создать стандартную локальную учетную запись пользователя Windows 10 и поместить ее в группу разрешений гостевого пользователя с примененными ограничениями.

Как только эта локальная учетная запись будет создана, вы сможете стирать данные профиля каждый раз, когда она используется. Это означает, что никакие данные между пользователями не сохраняются, обеспечивая безопасную изолированную среду для ваших гостей, которая остается изолированной от ваших собственных настроек и данных.

Создание гостевой учетной записи Windows 10

Как мы уже упоминали, создание гостевой учетной записи в Windows 10 включает создание локальной учетной записи пользователя и ограничение доступа к ней, добавляя ее в группу пользователей « Гости ». Вы можете сделать это с помощью инструмента Windows PowerShell.

  1. Щелкните правой кнопкой мыши меню «Пуск» Windows и выберите параметр Windows PowerShell (Admin).

  2. В новом окне PowerShell введите net user guestuser /add /active:yes и нажмите Enter. Это создаст новую локальную учетную запись пользователя с именем guestuser. Вы можете заменить guestuser другим именем пользователя, но не можете использовать guest, поскольку это запрещенная фраза.

  3. Вам нужно будет установить пароль для вашей гостевой учетной записи. Для этого введите net user guestuser * и нажмите Enter. Замените guestuser своим именем пользователя. Если вы хотите добавить пароль, укажите его на следующем этапе, в противном случае дважды нажмите клавишу Enter на клавиатуре, чтобы подтвердить, что у учетной записи нет пароля.

  4. По умолчанию новые пользователи добавляются в стандартную группу пользователей (Пользователи). Вам нужно будет удалить из него гостевую учетную запись, набрав net localgroup users guestuser /delete, чтобы удалить ее.

  5. После того, как учетная запись гостя была удалена из группы пользователей «Пользователи», вам необходимо добавить ее в группу пользователей «Гости». Это группа пользователей, которая обычно не используется в Windows 10, но пользователи этой группы имеют ограниченный доступ к настройкам системы и не могут устанавливать или удалять программное обеспечение. Для этого введите net localgroup guest guestuser /add.

  6. Создав новую гостевую учетную запись пользователя и войдя в группу пользователей «Гости», вам необходимо войти в нее, чтобы полностью создать профиль пользователя. Вы можете выйти из своей текущей учетной записи, щелкнув правой кнопкой мыши меню «Пуск» и выбрав «Завершение работы» или «Выйти» > кнопку «Выйти».

Ваша новая гостевая учетная запись Windows 10 появится на экране входа, и вы (и ваши гости) сможете начать ее использовать.

Сброс профиля пользователя для гостевой учетной записи Windows 10

На этом этапе ваша новая гостевая учетная запись Windows 10 должна быть готова к использованию. Однако, как и в любой обычной учетной записи пользователя, любые изменения, внесенные в нее, будут сохранены для следующего пользователя.

Поскольку гостевая учетная запись обычно используется разными людьми, вам необходимо сбрасывать профиль пользователя после каждого использования. Один из способов сделать это (если ваш компьютер предназначен только для гостевого использования) — использовать такое программное обеспечение, как Reboot Restore Rx, для создания зависшей установки ПК. Это программное обеспечение блокирует любые изменения на вашем ПК, восстанавливая предыдущее состояние при каждой перезагрузке.

Однако это полезно только для ПК с Windows, которые предназначены для гостевого использования. Если вы используете один и тот же компьютер в качестве гостевых пользователей, вам необходимо вручную сбрасывать профиль пользователя для вашей гостевой учетной записи после каждого использования. Вы можете сделать это из меню «Свойства системы».

  1. Для начала вам нужно открыть диалоговое окно «Выполнить». Для этого нажмите клавиши Windows + R или щелкните правой кнопкой мыши меню «Пуск» и выберите пункт «Выполнить».

  2. В диалоговом окне «Выполнить» введите systempropertiesadvanced и нажмите OK для запуска. Откроется меню «Свойства системы».

  3. На вкладке «Дополнительно» в меню «Свойства системы» нажмите кнопку «Настройки» в разделе «Профили пользователей».

  4. В окне «Профили пользователей» будет указан список ваших учетных записей. Выберите профиль пользователя для своей гостевой учетной записи, затем нажмите кнопку «Удалить».

  5. Вам нужно будет подтвердить, что вы хотите удалить профиль пользователя. Нажмите Да в поле Подтвердить удаление, чтобы подтвердить этот выбор.

При удалении профиля пользователя для вашей гостевой учетной записи Windows 10 любые изменения, внесенные в нее (включая изменение фона рабочего стола, любую предыдущую историю браузера и т.д.), Будут стерты. В следующий раз, когда гостевой пользователь войдет в систему, профиль будет восстановлен, что сделает его похожим на совершенно новую учетную запись пользователя.

Создание ПК с Windows 10, безопасного для гостей

Имея выделенную гостевую учетную запись на вашем ПК с Windows 10, вам больше не нужно беспокоиться о том, чтобы предлагать собственную учетную запись для друзей, семьи, гостей и т.д. Такие учетные записи имеют ограниченный доступ, но ваши гости могут использовать их для базового просмотра веб-страниц или для запуска уже установленных приложений или игр.

Если ваши гости приносят свои устройства, позаботьтесь о безопасности остальных членов семьи, ограничив доступ к вашему подключению. Многие домашние сетевые маршрутизаторы поддерживают функцию гостевой сети, позволяющую ограниченное подключение для гостевых устройств. Если вы хотите ограничить доступ к одному приложению, вы можете вместо этого настроить Windows 10 в режиме киоска.

https://www.youtube.com/watch?v=qpmstXl0LCE



2020-10-05T08:15:25
Вопросы читателей

Сортировка списка Python

Сортировка данных — одна из самых распространенных задач при работе с Python. Например, вы можете отсортировать список членов команды по именам или список проектов в порядке приоритета.

В этой статье описывается, как сортировать списки в Python .

Python sort() и sorted()

В Python, вы можете сортировать список с помощью встроенного в list.sort() метод или встроенный в sorted() функцию.

Функция sorted() создает новый отсортированный список, а метод list.sort() сортирует список на месте. Если вы хотите сохранить, несортированный список используйте функцию sorted() . Еще одно отличие состоит в том, что функция sorted sorted() работает с любым итерируемым объектом.

Синтаксис sort() и sorted() следующий:

list.sort(key=function, reverse=Boolean)

sorted(iterable, key=function, reverse=Boolean)

Необязательные ключевые аргументы key и reverse имеют следующее значение:

  • key — функция, которая принимает один аргумент и преобразует его перед сравнением. Функция должна возвращать одно значение, которое используется для сравнения сортировки.
  • reverse — значение reverse может быть True или False . Значение по умолчанию — True . Если для этого аргумента установлено значение false, список сортируется в обратном порядке.

Элементы списка сравниваются с помощью оператора «меньше чем» ( < ) и сортируются в порядке возрастания. Оператор < не поддерживает сравнение строки с целым числом, поэтому, если у вас есть список, содержащий строки и целые числа, операция сортировки завершится ошибкой.

В следующем примере показано, как отсортировать список строк в алфавитном порядке:

directions = ["north", "east", "south", "west"] 

directions.sort()

print('Sorted list:', directions)

Sorted list: ['east', 'north', 'south', 'west']

Если вы хотите сохранить исходный список без изменений, используйте функцию sorted() :

directions = ["north", "east", "south", "west"] 

sorted_directions = sorted(directions)

print('Sorted list:', sorted_directions)

Sorted list: ['east', 'north', 'south', 'west']

Чтобы отсортировать список в обратном (по убыванию) порядке, установите reverse аргумент в True :

directions = ["north", "east", "south", "west"] 

directions.sort(reverse=True)

print('Sorted list:', directions)

Sorted list: ['west', 'south', 'north', 'east']

Сортировка с функцией

Аргумент key принимает функцию и позволяет выполнять более сложные операции сортировки.

Самый простой пример — отсортировать элементы по их длине:

directions = ["Arya", "Daenerys", "Jon", "Brienne"] 

directions.sort(key=len)

print('Sorted list:', directions)

Мы используем функцию len() чтобы вернуть количество символов в строке, которая используется в качестве компаратора:

Sorted list: ['Jon', 'Arya', 'Brienne', 'Daenerys']

Вы также можете создать пользовательскую функцию и использовать ее в качестве key аргумента для сравнения. Вот пример, показывающий, как отсортировать список целых чисел по сумме их цифр:


def sum_digits(num): 
    digits = [int(x) for x in str(num)] 
    return sum(digits) 

numbers = [23, 77, 19, 310, 219] 

numbers.sort(reverse=True, key=sum_digits)

print('Sorted list:', numbers)

Sorted list: [77, 219, 19, 23, 310]

Другой пример — использование ключевого аргумента для сортировки сложного списка, такого как список кортежей:

numbers = [(3, 14), (1, 61), (2, 71)]

numbers.sort(key=lambda k: k[0])

print('Sorted list:', numbers)

Мы используем анонимную (лямбда) функцию, которая возвращает первый элемент кортежа. Список отсортирован по значению, возвращаемому функцией:

Sorted list: [(1, 61), (2, 71), (3, 14)]

Тот же подход можно использовать для сортировки списка словарей:

elements = [
    {'name': 'Germanium', 'number': 25, 'symbol': 'ge'},
    {'name': 'Silver', 'number': 47, 'symbol': 'ag'},
    {'name': 'Iron', 'number': 26, 'symbol': 'fe'},
]

elements.sort(key=lambda k: k['name'])

print('Sorted list:', elements)

Лямбда-функция возвращает значение ключа name , которое используется для сравнения:

Sorted list: [
    {'name': 'Germanium', 'number': 25, 'symbol': 'ge'}, 
    {'name': 'Iron', 'number': 26, 'symbol': 'fe'}, 
    {'name': 'Silver', 'number': 47, 'symbol': 'ag'}
]

Лучший и более быстрый способ сортировки сложной функции — использовать функции модуля Оператор . Вот пример:

from operator import itemgetter

elements = [
    {'name': 'Germanium', 'number': 25, 'symbol': 'ge'},
    {'name': 'Silver', 'number': 47, 'symbol': 'ag'},
    {'name': 'Iron', 'number': 26, 'symbol': 'fe'},
]

elements.sort(key=itemgetter('symbol'))

print('Sorted list:', elements)

Функция itemgetter извлекает значение symbol ключа:

Sorted list: [
    {'name': 'Silver', 'number': 47, 'symbol': 'ag'},
    {'name': 'Iron', 'number': 26, 'symbol': 'fe'},
    {'name': 'Germanium', 'number': 25, 'symbol': 'ge'}
]

Выводы

Мы показали вам, как сортировать списки в Python с помощью метода sort() и функции sorted() .

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.



2020-10-03T19:12:02
Python