Округляет, как банкир (ч.1)
Давайте реализуем наивную функцию для получения среднего элемента списка
Это не ошибка точности с плавающей запятой, на самом деле, такое поведение является преднамеренным. Начиная с Python 3.0, round() использует округление банкира, где дроби .5 округляются до ближайшего четного числа:
Давайте реализуем наивную функцию для получения среднего элемента списка
Это не ошибка точности с плавающей запятой, на самом деле, такое поведение является преднамеренным. Начиная с Python 3.0, round() использует округление банкира, где дроби .5 округляются до ближайшего четного числа:
Округляет, как банкир (ч.2)
Это рекомендуемый способ округления дробей .5, как описано в IEEE 754. Однако в школе большую часть времени преподают другой способ (округление от нуля), поэтому округление банкира, вероятно, не так хорошо известно. Кроме того, некоторые из самых популярных языков программирования (например: JavaScript, Java, C / C ++, Ruby, Rust) также не используют банковское округление.
Следовательно, это все еще довольно специфично для Python и может привести к путанице при округлении дробей.
Смотрите Документы round() или этот поток stackoverflow для получения дополнительной информации.
Обратите внимание, что get_middle([1]) было возвращено только 1, потому что индекс был round(0.5) - 1 = 0 - 1 = -1, возвращая последний элемент в списке.
Это рекомендуемый способ округления дробей .5, как описано в IEEE 754. Однако в школе большую часть времени преподают другой способ (округление от нуля), поэтому округление банкира, вероятно, не так хорошо известно. Кроме того, некоторые из самых популярных языков программирования (например: JavaScript, Java, C / C ++, Ruby, Rust) также не используют банковское округление.
Следовательно, это все еще довольно специфично для Python и может привести к путанице при округлении дробей.
Смотрите Документы round() или этот поток stackoverflow для получения дополнительной информации.
Обратите внимание, что get_middle([1]) было возвращено только 1, потому что индекс был round(0.5) - 1 = 0 - 1 = -1, возвращая последний элемент в списке.
Иголки в стоге сена (ч.4)
В 4-м фрагменте на AssertionError был поднят вопрос, потому что вместо утверждения отдельного выражения a == b мы утверждаем весь кортеж. Следующий фрагмент прояснит ситуацию,
В 4-м фрагменте на AssertionError был поднят вопрос, потому что вместо утверждения отдельного выражения a == b мы утверждаем весь кортеж. Следующий фрагмент прояснит ситуацию,
>>> a = "python"
>>> b = "javascript"
>>> assert a == b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError
>>> assert (a == b, "Значения не равны")
<stdin>:1: SyntaxWarning: assertion is always true, perhaps remove parentheses?
>>> assert a == b, "Значения не равны"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError: Values are not equal
Иголки в стоге сена (ч.5)
Что касается пятого фрагмента, большинство методов, которые изменяют элементы объектов последовательности / сопоставления, такие как list.append, dict.update, list.sort и т.д. измените объекты на месте и верните None. Обоснование этого заключается в повышении производительности за счет отказа от создания копии объекта, если операция может быть выполнена на месте
Что касается пятого фрагмента, большинство методов, которые изменяют элементы объектов последовательности / сопоставления, такие как list.append, dict.update, list.sort и т.д. измените объекты на месте и верните None. Обоснование этого заключается в повышении производительности за счет отказа от создания копии объекта, если операция может быть выполнена на месте
Разбиения
На первый взгляд может показаться, что разделителем по умолчанию для split является один пробел ' ', но согласно документации:
Если sep не указан или есть None, применяется другой алгоритм разделения: последовательные пробельные строки рассматриваются как единый разделитель, и результат не будет содержать пустых строк в начале или в конце, если строка содержит начальный или конечный пробел. Следовательно, возвращается разделение пустой строки или строки, состоящей только из пробелов с разделителем None []. Если задан sep, последовательные разделители не группируются вместе и считаются разделителями пустых строк (например, '1,,2'.split(',') возвращает ['1', '', '2']). Возвращает разделение пустой строки указанным разделителем [''].
На первый взгляд может показаться, что разделителем по умолчанию для split является один пробел ' ', но согласно документации:
Если sep не указан или есть None, применяется другой алгоритм разделения: последовательные пробельные строки рассматриваются как единый разделитель, и результат не будет содержать пустых строк в начале или в конце, если строка содержит начальный или конечный пробел. Следовательно, возвращается разделение пустой строки или строки, состоящей только из пробелов с разделителем None []. Если задан sep, последовательные разделители не группируются вместе и считаются разделителями пустых строк (например, '1,,2'.split(',') возвращает ['1', '', '2']). Возвращает разделение пустой строки указанным разделителем [''].
Хотите попробовать силы в Data Science? Пройдите бесплатный онлайн-интенсив по обработке и анализу данных с 15 по 17 июня. Начало прямых трансляций — в 21:00 по московскому времени.
Записывайтесь: 👉 https://goo.su/0HKLc7
Кому полезен интенсив:
📌 Интересующимся новичкам. Узнаете, с чем сталкиваются в работе специалисты по данным и какие бывают модели машинного обучения. Разберётесь, для чего нужны нейросети и как применять их в повседневной жизни. Решите несколько реальных задач и поймёте, интересна ли вам эта профессия.
📌 Начинающим специалистам. Научитесь применять Python для построения статистических моделей. Поработаете с библиотеками Pandas и Matplotlib. Разберёте несколько практических заданий и повысите свой уровень.
💬 Спикер интенсива — руководитель направления по исследованию данных в Сбере с восьмилетним опытом в программировании Анастасия Борнева.
🎁 Участвуйте, задавайте вопросы и получите сертификат на скидку 10 000 рублей на любой курс Skillbox.
Присоединяйтесь!
Записывайтесь: 👉 https://goo.su/0HKLc7
Кому полезен интенсив:
📌 Интересующимся новичкам. Узнаете, с чем сталкиваются в работе специалисты по данным и какие бывают модели машинного обучения. Разберётесь, для чего нужны нейросети и как применять их в повседневной жизни. Решите несколько реальных задач и поймёте, интересна ли вам эта профессия.
📌 Начинающим специалистам. Научитесь применять Python для построения статистических моделей. Поработаете с библиотеками Pandas и Matplotlib. Разберёте несколько практических заданий и повысите свой уровень.
💬 Спикер интенсива — руководитель направления по исследованию данных в Сбере с восьмилетним опытом в программировании Анастасия Борнева.
🎁 Участвуйте, задавайте вопросы и получите сертификат на скидку 10 000 рублей на любой курс Skillbox.
Присоединяйтесь!
Все разобрано? (ч.1)
Sorted Метод всегда возвращает список, а сравнение списков и кортежей всегда возвращает False результат на Python.
В отличие от этого, sortedметод reversed возвращает итератор. Почему? Потому что сортировка требует, чтобы итератор был либо изменен на месте, либо использовал дополнительный контейнер (список), тогда как реверсирование может просто работать путем повторения от последнего индекса к первому.
Sorted Метод всегда возвращает список, а сравнение списков и кортежей всегда возвращает False результат на Python.
В отличие от этого, sortedметод reversed возвращает итератор. Почему? Потому что сортировка требует, чтобы итератор был либо изменен на месте, либо использовал дополнительный контейнер (список), тогда как реверсирование может просто работать путем повторения от последнего индекса к первому.
Знакомы с Python? Хотите дополнить базовые знания крутой практикой? Тогда бесплатный буткемп Skillbox для вас! Минимум скучной теории, больше — мощной практики на реальных задачах разработчиков. Вы получите полное представление о направлениях внутри Python-разработки, выполните по ним задания и решите, что нравится вам. Один мини-курс — сразу 4 проекта в портфолио!
Записаться и узнать подробную программу: https://goo.su/zYaK
За 4 занятия вы изучите видеоматериалы в записи. Акцент сделан на практике, поэтому в роликах много подробных примеров работы. После каждого видео есть практическое задание.
— Разберёте базовый синтаксис языка.
— Создадите бота для Telegram, который умеет переводить голос в текст.
— Сделаете бота умнее: «научите» его обрабатывать фотографии.
— Узнаете, как парсить сайты — собирать информацию с веб-страниц в удобные таблицы.
— Напишете сайт с помощью инструмента Flask.
В финале буткемпа вас ждёт прямой эфир с экспертом Анастасией Борневой — руководителем направления по исследованию данных в Сбере. В прямом эфире она поделится профессиональными секретами, разберёт ваши работы и ответит на вопросы.
Вас ждут крутые подарки: чек-листы, гайды, скринкасты и другие бонусы. Эти материалы пригодятся в работе и помогут больше узнать о профессии.
Присоединяйтесь!
Записаться и узнать подробную программу: https://goo.su/zYaK
За 4 занятия вы изучите видеоматериалы в записи. Акцент сделан на практике, поэтому в роликах много подробных примеров работы. После каждого видео есть практическое задание.
— Разберёте базовый синтаксис языка.
— Создадите бота для Telegram, который умеет переводить голос в текст.
— Сделаете бота умнее: «научите» его обрабатывать фотографии.
— Узнаете, как парсить сайты — собирать информацию с веб-страниц в удобные таблицы.
— Напишете сайт с помощью инструмента Flask.
В финале буткемпа вас ждёт прямой эфир с экспертом Анастасией Борневой — руководителем направления по исследованию данных в Сбере. В прямом эфире она поделится профессиональными секретами, разберёт ваши работы и ответит на вопросы.
Вас ждут крутые подарки: чек-листы, гайды, скринкасты и другие бонусы. Эти материалы пригодятся в работе и помогут больше узнать о профессии.
Присоединяйтесь!