Python sort что это

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

Что такое метод sort() в Python?

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

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

Выполним наш код и получим следующий результат:

Однако если список уже отсортирован, то мы получим None.

Значением key выступает функция, которая будет вызываться для каждого элемента в списке.

От редакции Pythonist. О функциях и их аргументах у нас есть отдельная статья — «Функции и их аргументы в Python 3».

В следующем примере давайте используем функцию len() в качестве значения аргумента key. Таким образом, key=len скажет компьютеру отсортировать список имен по длине, от наименьшего к наибольшему.

Вот, что мы получим:

Аргумент reverse может иметь логическое значение: True (Истина) или False (Ложь).

В следующем примере reverse=True укажет компьютеру отсортировать список в обратном алфавитном порядке.

Марк Лутц «Изучаем Python»

Скачивайте книгу у нас в телеграм

Как использовать метод sorted() в Python

Этот метод превращает итерируемый объект в отсортированный список. Итерируемыми объектами могут быть списки, строки и кортежи.

Одно из ключевых различий между sort() и sorted() заключается в том, что sorted() вернет новый список, а sort() сортирует уже имеющийся.

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

Метод sorted() для других типов данных

Еще одно ключевое различие между sorted() и sort() заключается в том, что метод sorted() принимает любые итерируемые объекты (списки, строки, кортежи и т.д.), тогда как метод sort() работает только со списками.

Мы также можем использовать метод sorted() и для кортежей.

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

Мы можем использовать метод sorted() для сортировки этих данных по возрасту учащегося. Аргумент key будет иметь значение лямбда-функции, которая сообщает компьютеру о сортировке по возрасту в порядке возрастания.

Итак, напишем следующую лямбду-функцию, которая будет говорить нашей программе, что отсортировать мы хотим именно по возрасту:

Таким образом, мы получаем следующий код:

Мы можем изменить этот пример. Давайте отсортируем кортежи по названиям музыкальных инструментов. Более того, давайте используем reverse=True для сортировки инструментов в обратном алфавитном порядке.

Заключение

Метод sort() работает только со списками и сортирует уже имеющийся список. Данный метод ничего не возвращает.

А метод sorted() работает с любыми итерируемыми объектами и возвращает новый отсортированный список. В качестве итерируемых объектов могут выступать списки, строки, кортежи и другие.

Значением аргумента key может быть функция. Она будет вызываться для каждого элемента в списке. По этой функции, собственно, и будет проводиться сортировка.

Надеемся, эта статья была для вас полезна. Успехов в написании кода!

Источник

Поводом опубликовать пост стало то, что при детальном изучении списков (массивов) в Python я не смог найти в сети ни одного простого описания метода сортировки элементов с использованием ключа: list.sort(key=. ).

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

Итак, что мы имеем. Предположим, у нас есть список, который мы бы хотели отсортировать — и состоит он из трех строк разной длины в определенной последовательности:

sortList = [‘a’, ‘сс’, ‘bbb’]

то получим на выходе:

Для изменения принципа сортировки используется ключевое слово key, которое стало доступным начиная с версии Python 2.4.

Предположим, нам хотелось бы отсортировать наш список двумя способами: 1. в алфавитном порядке; 2. по длине строки. Первый способ, впрочем, уже работает как сортировка по умолчанию, однако мы можем добиться таких же результатов и с помощью параметра key:

sortList = [‘a’, ‘cc’, ‘bbb’]

# Создаем «внешнюю» функцию, которая будет сортировать список в алфавитном порядке:
def sortByAlphabet(inputStr):
return inputStr[0] # Ключом является первый символ в каждой строке, сортируем по нему

# Вторая функция, сортирующая список по длине строки:
def sortByLength(inputStr):
return len(inputStr) # Ключом является длина каждой строки, сортируем по длине

print u’Исходный список: ‘, sortList # >>> [‘a’, ‘cc’, ‘bbb’]

sortList.sort(key=sortByAlphabet) # Каждый элемент массива передается в качестве параметра функции
print u’Отсортировано в алфавитном порядке: ‘, sortList # >>> [‘a’, ‘bbb’, ‘cc’]

sortList.sort(key=sortByLength) # Каждый элемент массива передается в качестве параметра функции
print u’Отсортировано по длине строки: ‘, sortList # >>> [‘a’, ‘cc’, ‘bbb’]

# Теперь отсортируем по длине строки, но в обратном порядке:
sortList.sort(key=sortByLength, reverse=True) # В обратном порядке
print u’Отсортировано по длине строки, в обратном порядке: ‘, sortList # >>> [‘bbb’, ‘cc’, ‘a’]

— либо такой же вариант, но с параметром key (аналогично описанному выше):

newList = sorted(sortList, key=sortByLength)

Источник

Метод List sort() в Python

Метод List sort() в Python сортирует элементы списка в порядке возрастания.

В Python есть встроенная функция sorted(), которая используется для создания отсортированного списка из итерируемого объекта.

1. Использование метода List sort() по умолчанию

По умолчанию метод list sort() в Python упорядочивает элементы списка в порядке возрастания. Это также естественный способ сортировки элементов.

Элементы также могут быть символами или числами, и метод sort() продолжит сортировку в порядке возрастания.

2. Обратная сортировка списка

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

3. Сортировка вложенного списка

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

Понятно, что сортировка производится по первому элементу вложенного списка. Но иногда нам нужно отсортировать вложенный список по позициям разных элементов.

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

Мы используем ключевой аргумент, чтобы указать элемент, который будет использоваться для целей сортировки. Функция custom_key возвращает ключ для сортировки списка.

4. Пользовательская логика для сортировки списка

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

В последнем примере мы использовали возраст как ключевой элемент для сортировки нашего списка.

Но есть такая поговорка: «Сначала дамы!». Итак, мы хотим отсортировать наш список таким образом, чтобы женский пол имел приоритет над мужским. Если пол двух человек совпадает, младший получает более высокий приоритет.

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

Итак, нам нужно импортировать библиотеку под названием functools. Мы будем использовать функцию cmp_to_key(), чтобы преобразовать compare_function в key.

Список сначала сортируется по полу. Затем он сортируется по возрасту людей.

5. Сортировка списка объектов

Сортировка по умолчанию работает с числами и строками. Но это не будет работать со списком настраиваемых объектов. Посмотрим, что произойдет, когда мы попытаемся запустить сортировку по умолчанию для списка объектов.

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

Мы также можем использовать модуль functools для создания пользовательской логики сортировки для элементов списка.

Источник

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

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

Python sort() и sorted()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Выводы

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

Источник

Функции сортировки sort и sorted

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

для всех остальных типов коллекций. Давайте вначале посмотрим на отличие в их вызовах. Если у нас имеется какой-либо упорядоченный список:

то этот объект имеет встроенный метод sort, который меняет его состояние и расставляет элементы по возрастанию:

Получим измененный список:

А вот коллекции кортежи или строки:

не имеют такого встроенного метода и попытка их отсортировать, записав:

приведет к ошибке. Для их сортировки как раз и можно воспользоваться второй функцией sorted:

на выходе получим упорядоченный список

Обратите внимание, чтобы мы не передавали в качестве аргумента функции sorted, на выходе будем получать именно список отсортированных данных. В данном случае передаем кортеж, а получаем – список.

результатом будет упорядоченная коллекция из символов:

Причем, эта функция не меняет исходные коллекции b и c, она возвращает новый список с отсортированными данными. В то время как метод sort для списка меняет этот список. Вот на это следует также обращать внимание. То есть, если нам нужно сохранить результат сортировки в переменной, это делается так:

и res будет ссылаться на список:

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

отсортировать не получится:

возникнет ошибка, что строку нельзя сравнивать с числом. И то же самое с функцией sorted:

Если уберем последний элемент:

то все будет работать:

И этот пример также показывает, что список можно сортировать и с помощью метода sort и с помощью функции sorted. Разница только в том, что метод sort не создает новой коллекции, а меняет уже существующую. Функция же sorted не меняет исходную коллекцию, а создает новую с отсортированными элементами. Поэтому, для изменения коллекции a здесь следует записывать такую конструкцию:

Оба этих подхода к сортировке поддерживают необязательный параметр

который определяет порядок сортировки: по возрастанию (False) или по убыванию (True). По умолчанию стоит значение reverse=False. Если мы запишем его вот так:

то получим сортировку по убыванию:

И то же самое с методом sort:

Своя сортирующая функция

Язык Python позволяет создавать свои сортирующие функции для более точной настройки алгоритма сортировки. Давайте для начала рассмотрим такой пример. Пусть у нас имеется вот такой список:

и мы хотим, чтобы вначале стояли четные элементы, а в конце – нечетные. Для этого создадим такую вспомогательную функцию:

И укажем ее при сортировке:

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

Разберемся, почему так произошло. Смотрите, функция funcSort возвращает вот такие значения для каждого элемента списка a:

Python sort что это. image001. Python sort что это фото. Python sort что это-image001. картинка Python sort что это. картинка image001

И, далее, в sorted уже используются именно эти значения для сортировки элементов по возрастанию. То есть, сначала, по порядку берется элемент со значением 4, затем, 6 и потом 2. После этого следуют нечетные значения в порядке их следования: 1, 3, 5. В результате мы получаем список:

А теперь, давайте модифицируем нашу функцию, чтобы выполнялась сортировка и самих значений:

Здесь четные значения возвращаются такими как они есть, а к нечетным прибавляем 100. В результате получим:

Python sort что это. image002. Python sort что это фото. Python sort что это-image002. картинка Python sort что это. картинка image002

Здесь элементам нашего списка ставятся в соответствие указанные числа, и по этим числам выполняется их сортировка. То есть, эти числа можно воспринимать как некие ключи, по которым и происходит сортировка элементов списка. Поэтому в Python такую сортировку называют сортировкой по ключам.

Конечно, здесь вместо определения своей функции можно также записывать анонимные функции, например:

Получим ранее рассмотренный результат:

Или, то же самое можно делать и со строками:

Отсортируем их по длине строки:

[‘Тверь’, ‘Псков’, ‘Москва’, ‘Рязань’, ‘Смоленск’]

Или по последнему символу, используя лексикографический порядок:

[‘Москва’, ‘Псков’, ‘Смоленск’, ‘Тверь’, ‘Рязань’]

Или, по первому символу:

[‘Москва’, ‘Псков’, ‘Рязань’, ‘Смоленск’, ‘Тверь’]

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

И нам нужно его отсортировать по возрастанию цены (последнее значение). Это можно сделать так:

На выходе получим список:

[(‘Мертвые души’, ‘Гоголь Н.В.’, 190), (‘Евгений Онегин’, ‘Пушкин А.С.’, 200), (‘Муму’, ‘Тургенев И.С.’, 250), (‘Мастер и Маргарита’, ‘Булгаков М.А.’, 500)]

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

Задания для самоподготовки

1. Используя сортировку, найдите первые три наименьшие значения в списке:

Сам список должен оставаться неизменным.

2. Отсортируйте список:

так, чтобы сначала шли отрицательные числа, а затем, положительные.

3. Пусть имеется словарь:

Необходимо вывести телефонные номера по убыванию чисел, указанных в ключах, то есть, в порядке:

Видео по теме

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#1. Первое знакомство с Python Установка на компьютер

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#2. Варианты исполнения команд. Переходим в PyCharm

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#3. Переменные, оператор присваивания, функции type и id

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#4. Числовые типы, арифметические операции

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#5. Математические функции и работа с модулем math

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#6. Функции print() и input(). Преобразование строк в числа int() и float()

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#7. Логический тип bool. Операторы сравнения и операторы and, or, not

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#8. Введение в строки. Базовые операции над строками

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#9. Знакомство с индексами и срезами строк

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#10. Основные методы строк

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#11. Спецсимволы, экранирование символов, row-строки

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#12. Форматирование строк: метод format и F-строки

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#14. Срезы списков и сравнение списков

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#15. Основные методы списков

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#16. Вложенные списки, многомерные списки

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#17. Условный оператор if. Конструкция if-else

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#18. Вложенные условия и множественный выбор. Конструкция if-elif-else

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#19. Тернарный условный оператор. Вложенное тернарное условие

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#20. Оператор цикла while

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#21. Операторы циклов break, continue и else

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#22. Оператор цикла for. Функция range()

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#23. Примеры работы оператора цикла for. Функция enumerate()

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#24. Итератор и итерируемые объекты. Функции iter() и next()

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#25. Вложенные циклы. Примеры задач с вложенными циклами

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#26. Треугольник Паскаля как пример работы вложенных циклов

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#27. Генераторы списков (List comprehensions)

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#28. Вложенные генераторы списков

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#29. Введение в словари (dict). Базовые операции над словарями

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#30. Методы словаря, перебор элементов словаря в цикле

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#31. Кортежи (tuple) и их методы

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#32. Множества (set) и их методы

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#33. Операции над множествами, сравнение множеств

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#34. Генераторы множеств и генераторы словарей

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#35. Функции: первое знакомство, определение def и их вызов

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#36. Оператор return в функциях. Функциональное программирование

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#37. Алгоритм Евклида для нахождения НОД

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#38. Именованные аргументы. Фактические и формальные параметры

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#39. Функции с произвольным числом параметров *args и **kwargs

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#40. Операторы * и ** для упаковки и распаковки коллекций

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#41. Рекурсивные функции

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#42. Анонимные (lambda) функции

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#43. Области видимости переменных. Ключевые слова global и nonlocal

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#44. Замыкания в Python

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#45. Введение в декораторы функций

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#46. Декораторы с параметрами. Сохранение свойств декорируемых функций

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#47. Импорт стандартных модулей. Команды import и from

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#48. Импорт собственных модулей

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#49. Установка сторонних модулей (pip install). Пакетная установка

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#50. Пакеты (package) в Python. Вложенные пакеты

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#51. Функция open. Чтение данных из файла

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#52. Исключение FileNotFoundError и менеджер контекста (with) для файлов

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#53. Запись данных в файл в текстовом и бинарном режимах

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#54. Выражения генераторы

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#55. Функция-генератор. Оператор yield

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#56. Функция map. Примеры ее использования

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#57. Функция filter для отбора значений итерируемых объектов

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#58. Функция zip. Примеры использования

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#59. Сортировка с помощью метода sort и функции sorted

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#60. Аргумент key для сортировки коллекций по ключу

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#61. Функции isinstance и type для проверки типов данных

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#62. Функции all и any. Примеры их использования

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#63. Расширенное представление чисел. Системы счисления

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#64. Битовые операции И, ИЛИ, НЕ, XOR. Сдвиговые операторы

Python sort что это. default. Python sort что это фото. Python sort что это-default. картинка Python sort что это. картинка default

#65. Модуль random стандартной библиотеки

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *